@norcy/react-native-toolkit 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,349 @@
1
+ import { AppleLoginUtil, BuildInPrefs, LoginType, Notification, PrefData, WeChatLoginUtil } from '@norcy/react-native-toolkit';
2
+ import { Platform } from 'react-native';
3
+ import { getUniqueIdSync } from 'react-native-device-info';
4
+ import { LoginState } from './constant';
5
+ import { i18n } from './i18n';
6
+ const AV = require('leancloud-storage');
7
+ let CURRENT_USER = null;
8
+ let WeiXinId = '';
9
+ let WeiXinSecret = '';
10
+ const AVUserToLocalUser = user => {
11
+ return {
12
+ nickname: user.get('nickname'),
13
+ email: user.get('email'),
14
+ headimgurl: user.get('headimgurl'),
15
+ type: user.get('type'),
16
+ AVUser: user
17
+ };
18
+ };
19
+ const onLoginFinish = _ref => {
20
+ let {
21
+ isAuto = false,
22
+ user,
23
+ error,
24
+ code
25
+ } = _ref;
26
+ const data = {
27
+ isAuto,
28
+ user,
29
+ error,
30
+ code
31
+ };
32
+ if (user) {
33
+ PrefData.setValue(BuildInPrefs.LastLoginType, user.type);
34
+ }
35
+ Notification.postNotification('onLogin', data);
36
+ };
37
+ const doLeanCloudLogin = async (authData, userData, callback) => {
38
+ console.log('Lean Cloud 开始登录', userData);
39
+ // loginType 空说明是老用户
40
+ const loginType = authData.loginType ? authData.loginType : 'apple';
41
+ let loginTypeNum = LoginType.LoginTypeApple;
42
+ if (loginType === 'wechat') {
43
+ loginTypeNum = LoginType.LoginTypeWeChat;
44
+ } else if (loginType === 'visitor') {
45
+ loginTypeNum = LoginType.LoginTypeVisitor;
46
+ }
47
+ AV.User.loginWithAuthData(authData, loginType, {
48
+ failOnNotExist: true
49
+ }).then(user => {
50
+ // 登录成功
51
+ console.log('Lean Cloud 登录成功');
52
+ // 每次重新鉴权都更新头像和昵称,避免微信头像过期
53
+ // if (userData?.nickname) {
54
+ // user.set('nickname', userData?.nickname);
55
+ // }
56
+ // if (userData?.headimgurl) {
57
+ // user.set('headimgurl', userData?.headimgurl);
58
+ // }
59
+ // user.save();
60
+ CURRENT_USER = AVUserToLocalUser(user);
61
+ callback({
62
+ user: CURRENT_USER
63
+ });
64
+ }, error => {
65
+ if (error.code === 211) {
66
+ // 创建用户,并补充资料
67
+ console.log('创建用户,并补充资料');
68
+ const newUser = new AV.User();
69
+ const email = userData === null || userData === void 0 ? void 0 : userData.email;
70
+ if (email) {
71
+ newUser.setEmail(email);
72
+ }
73
+ newUser.set('nickname', userData === null || userData === void 0 ? void 0 : userData.nickname);
74
+ newUser.set('headimgurl', userData === null || userData === void 0 ? void 0 : userData.headimgurl);
75
+ newUser.set('type', loginTypeNum);
76
+ if (Platform.OS === 'android') {
77
+ newUser.set('source', 2);
78
+ }
79
+ newUser.set('toLDB', 1);
80
+ newUser.loginWithAuthData(authData, loginType).then(user => {
81
+ // 登录成功
82
+ console.log('Lean Cloud 注册成功');
83
+ CURRENT_USER = AVUserToLocalUser(user);
84
+ CURRENT_USER.isNew = true;
85
+ // 标记为当前用户是在本机注册的 TODO
86
+ // PrefData.setValue(Prefs.RegisterInThisDevice, true);
87
+ callback({
88
+ user: CURRENT_USER
89
+ });
90
+ }, error2 => {
91
+ // 登录失败
92
+ console.log('Lean Cloud 登录失败', error2);
93
+ callback({
94
+ error: error2
95
+ });
96
+ });
97
+ } else {
98
+ // 登录失败
99
+ console.log('Lean Cloud 登录失败', error);
100
+ callback({
101
+ error: error
102
+ });
103
+ }
104
+ });
105
+ };
106
+ const LoginManager = {
107
+ setup: (WeChatId, WeChatSecret) => {
108
+ WeiXinId = WeChatId;
109
+ WeChatSecret = WeChatSecret;
110
+ },
111
+ // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败
112
+ autoLogin: async () => {
113
+ const user = await AV.User.currentAsync();
114
+ if (user) {
115
+ console.log('自动登录成功');
116
+ CURRENT_USER = AVUserToLocalUser(user);
117
+ onLoginFinish({
118
+ isAuto: true,
119
+ user: CURRENT_USER
120
+ });
121
+ } else {
122
+ onLoginFinish({
123
+ isAuto: true,
124
+ error: 'User Not Login Yet'
125
+ });
126
+ }
127
+ },
128
+ // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权
129
+ login: async function (type) {
130
+ let devAuthData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
131
+ let loadingCallback = arguments.length > 2 ? arguments[2] : undefined;
132
+ // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData
133
+ const cuurentUser = await AV.User.currentAsync();
134
+ if (cuurentUser) {
135
+ await LoginManager.autoLogin();
136
+ return;
137
+ }
138
+
139
+ // 改为注入 delegate
140
+ if (__DEV__) {
141
+ if (devAuthData) {
142
+ doLeanCloudLogin(devAuthData, undefined, _ref2 => {
143
+ let {
144
+ user,
145
+ error
146
+ } = _ref2;
147
+ onLoginFinish({
148
+ user,
149
+ error
150
+ });
151
+ });
152
+ return;
153
+ }
154
+ }
155
+ if (type === LoginType.LoginTypeApple) {
156
+ const {
157
+ user,
158
+ email,
159
+ identityToken,
160
+ error,
161
+ code
162
+ } = await AppleLoginUtil.requestAppleUserForLogin();
163
+ if (!user || error) {
164
+ onLoginFinish({
165
+ error,
166
+ code
167
+ });
168
+ return;
169
+ } else {
170
+ let userData = {
171
+ userId: user,
172
+ email: email,
173
+ authData: {
174
+ openid: user,
175
+ access_token: identityToken,
176
+ expires_in: 99999999,
177
+ loginType: 'apple'
178
+ }
179
+ };
180
+ AppleLoginUtil.fetchAndUpdateCredentialState(userData.userId, _ref3 => {
181
+ let {
182
+ result,
183
+ error: error2
184
+ } = _ref3;
185
+ if (error || result !== LoginState.AUTHORIZED) {
186
+ onLoginFinish({
187
+ error: error2
188
+ });
189
+ } else {
190
+ loadingCallback && loadingCallback();
191
+ doLeanCloudLogin(userData.authData, userData, _ref4 => {
192
+ let {
193
+ user: loginUser,
194
+ error: error3
195
+ } = _ref4;
196
+ onLoginFinish({
197
+ user: loginUser,
198
+ error: error3
199
+ });
200
+ });
201
+ }
202
+ });
203
+ }
204
+ } else if (type === LoginType.LoginTypeWeChat) {
205
+ WeChatLoginUtil.doLogin(WeiXinId, WeiXinSecret, _ref5 => {
206
+ let {
207
+ nickname,
208
+ headimgurl,
209
+ openid,
210
+ unionid,
211
+ error
212
+ } = _ref5;
213
+ if (error) {
214
+ onLoginFinish({
215
+ error
216
+ });
217
+ } else {
218
+ let userData = {
219
+ nickname: nickname,
220
+ headimgurl: headimgurl,
221
+ authData: {
222
+ openid: openid,
223
+ unionid: unionid,
224
+ access_token: openid,
225
+ expires_in: 99999999,
226
+ loginType: 'wechat'
227
+ }
228
+ };
229
+ loadingCallback && loadingCallback();
230
+ doLeanCloudLogin(userData.authData, userData, _ref6 => {
231
+ let {
232
+ user,
233
+ error: error2
234
+ } = _ref6;
235
+ onLoginFinish({
236
+ user,
237
+ error: error2
238
+ });
239
+ });
240
+ }
241
+ });
242
+ } else if (type === LoginType.LoginTypeVisitor) {
243
+ const uniqueId = getUniqueIdSync();
244
+ console.log(uniqueId);
245
+ let userData = {
246
+ nickname: i18n.t('游客'),
247
+ authData: {
248
+ openid: uniqueId,
249
+ access_token: uniqueId,
250
+ expires_in: 99999999,
251
+ loginType: 'visitor'
252
+ }
253
+ };
254
+ loadingCallback && loadingCallback();
255
+ doLeanCloudLogin(userData.authData, userData, _ref7 => {
256
+ let {
257
+ user,
258
+ error
259
+ } = _ref7;
260
+ onLoginFinish({
261
+ user,
262
+ error
263
+ });
264
+ });
265
+ } else {
266
+ onLoginFinish({
267
+ error: i18n.t('未知登录类型,不应该走到这')
268
+ });
269
+ }
270
+ },
271
+ logOut: callback => {
272
+ console.log('onLogout');
273
+ AV.User.logOut();
274
+ CURRENT_USER = null;
275
+ callback && callback();
276
+ Notification.postNotification('onLogout');
277
+ },
278
+ isLogin: () => {
279
+ return LoginManager.currentUser() != null;
280
+ },
281
+ isVisitor: () => {
282
+ var _LoginManager$current;
283
+ return LoginManager.isLogin() && ((_LoginManager$current = LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.type) === LoginType.LoginTypeVisitor;
284
+ },
285
+ currentUser: () => {
286
+ // console.log('current user is ', CURRENT_USER);
287
+ return CURRENT_USER;
288
+ },
289
+ batchUpdateUser: async (keys, values, callback) => {
290
+ console.log('Batch Update User Begin: ' + keys + ' ' + values);
291
+ const user = await AV.User.currentAsync();
292
+ if (!user) {
293
+ return;
294
+ }
295
+ const oldValues = [];
296
+ for (let i = 0; i < keys.length; i++) {
297
+ oldValues.push(user.get(keys[i]));
298
+ user.set(keys[i], values[i]);
299
+ }
300
+ try {
301
+ const newUser = await user.save();
302
+ CURRENT_USER = AVUserToLocalUser(newUser);
303
+ console.log('Batch Update User End', user);
304
+ callback && callback();
305
+ } catch (e) {
306
+ console.error(e);
307
+ for (let i = 0; i < keys.length; i++) {
308
+ user.set(keys[i], oldValues[i]);
309
+ }
310
+ callback && callback(e);
311
+ }
312
+ },
313
+ updateUser: (key, value, callback) => {
314
+ LoginManager.batchUpdateUser([key], [value], callback);
315
+ },
316
+ deleteUser: async callback => {
317
+ try {
318
+ if (!CURRENT_USER) {
319
+ return;
320
+ }
321
+ if (CURRENT_USER.type === LoginType.LoginTypeApple) {
322
+ await AppleLoginUtil.requestDeleteAccount();
323
+ }
324
+ const user = await AV.User.currentAsync();
325
+ console.log('get user success');
326
+ await user.destroy();
327
+ console.log('delete user success');
328
+ callback();
329
+ } catch (error) {
330
+ console.error(error);
331
+ callback(error);
332
+ }
333
+ },
334
+ lastLoginType: () => {
335
+ return PrefData.getValue(BuildInPrefs.LastLoginType);
336
+ },
337
+ fetchWeChatAvatar: callback => {
338
+ WeChatLoginUtil.doLogin(WeiXinId, WeiXinSecret, _ref8 => {
339
+ let {
340
+ headimgurl
341
+ } = _ref8;
342
+ callback({
343
+ headimgurl
344
+ });
345
+ });
346
+ }
347
+ };
348
+ export default LoginManager;
349
+ //# sourceMappingURL=LoginManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AppleLoginUtil","BuildInPrefs","LoginType","Notification","PrefData","WeChatLoginUtil","Platform","getUniqueIdSync","LoginState","i18n","AV","require","CURRENT_USER","WeiXinId","WeiXinSecret","AVUserToLocalUser","user","nickname","get","email","headimgurl","type","AVUser","onLoginFinish","_ref","isAuto","error","code","data","setValue","LastLoginType","postNotification","doLeanCloudLogin","authData","userData","callback","console","log","loginType","loginTypeNum","LoginTypeApple","LoginTypeWeChat","LoginTypeVisitor","User","loginWithAuthData","failOnNotExist","then","newUser","setEmail","set","OS","isNew","error2","LoginManager","setup","WeChatId","WeChatSecret","autoLogin","currentAsync","login","devAuthData","arguments","length","undefined","loadingCallback","cuurentUser","__DEV__","_ref2","identityToken","requestAppleUserForLogin","userId","openid","access_token","expires_in","fetchAndUpdateCredentialState","_ref3","result","AUTHORIZED","_ref4","loginUser","error3","doLogin","_ref5","unionid","_ref6","uniqueId","t","_ref7","logOut","isLogin","currentUser","isVisitor","_LoginManager$current","batchUpdateUser","keys","values","oldValues","i","push","save","e","updateUser","key","value","deleteUser","requestDeleteAccount","destroy","lastLoginType","getValue","fetchWeChatAvatar","_ref8"],"sources":["LoginManager.ts"],"sourcesContent":["import {\n AppleLoginUtil,\n BuildInPrefs,\n LoginType,\n Notification,\n PrefData,\n WeChatLoginUtil,\n} from '@norcy/react-native-toolkit';\nimport { User } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getUniqueIdSync } from 'react-native-device-info';\nimport {\n LoginAuthDataType,\n LoginState,\n LoginUserDataType,\n UserType,\n} from './constant';\nimport { i18n } from './i18n';\n\nconst AV = require('leancloud-storage');\n\nlet CURRENT_USER: UserType | null = null;\n\nlet WeiXinId = '';\nlet WeiXinSecret = '';\n\nconst AVUserToLocalUser = (user: User) => {\n return {\n nickname: user.get('nickname'),\n email: user.get('email'),\n headimgurl: user.get('headimgurl'),\n type: user.get('type'),\n AVUser: user,\n };\n};\n\nconst onLoginFinish = ({\n isAuto = false,\n user,\n error,\n code,\n}: {\n isAuto?: boolean;\n user?: UserType;\n error?: string | object;\n code?: number;\n}) => {\n const data = { isAuto, user, error, code };\n if (user) {\n PrefData.setValue(BuildInPrefs.LastLoginType, user.type);\n }\n Notification.postNotification('onLogin', data);\n};\n\nconst doLeanCloudLogin = async (\n authData: LoginAuthDataType,\n userData: LoginUserDataType | undefined,\n callback: ({ user, error }: { user?: UserType; error?: any }) => void\n) => {\n console.log('Lean Cloud 开始登录', userData);\n // loginType 空说明是老用户\n const loginType = authData.loginType ? authData.loginType : 'apple';\n let loginTypeNum = LoginType.LoginTypeApple;\n if (loginType === 'wechat') {\n loginTypeNum = LoginType.LoginTypeWeChat;\n } else if (loginType === 'visitor') {\n loginTypeNum = LoginType.LoginTypeVisitor;\n }\n\n AV.User.loginWithAuthData(authData, loginType, { failOnNotExist: true }).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 登录成功');\n // 每次重新鉴权都更新头像和昵称,避免微信头像过期\n // if (userData?.nickname) {\n // user.set('nickname', userData?.nickname);\n // }\n // if (userData?.headimgurl) {\n // user.set('headimgurl', userData?.headimgurl);\n // }\n // user.save();\n CURRENT_USER = AVUserToLocalUser(user);\n callback({ user: CURRENT_USER });\n },\n (error: any) => {\n if (error.code === 211) {\n // 创建用户,并补充资料\n console.log('创建用户,并补充资料');\n const newUser = new AV.User();\n const email = userData?.email;\n if (email) {\n newUser.setEmail(email);\n }\n newUser.set('nickname', userData?.nickname);\n newUser.set('headimgurl', userData?.headimgurl);\n newUser.set('type', loginTypeNum);\n if (Platform.OS === 'android') {\n newUser.set('source', 2);\n }\n newUser.set('toLDB', 1);\n newUser.loginWithAuthData(authData, loginType).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 注册成功');\n CURRENT_USER = AVUserToLocalUser(user);\n CURRENT_USER.isNew = true;\n // 标记为当前用户是在本机注册的 TODO\n // PrefData.setValue(Prefs.RegisterInThisDevice, true);\n callback({ user: CURRENT_USER });\n },\n (error2: any) => {\n // 登录失败\n console.log('Lean Cloud 登录失败', error2);\n callback({ error: error2 });\n }\n );\n } else {\n // 登录失败\n console.log('Lean Cloud 登录失败', error);\n callback({ error: error });\n }\n }\n );\n};\n\nconst LoginManager = {\n setup: (WeChatId: string, WeChatSecret: string) => {\n WeiXinId = WeChatId;\n WeChatSecret = WeChatSecret;\n },\n\n // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败\n autoLogin: async () => {\n const user = await AV.User.currentAsync();\n if (user) {\n console.log('自动登录成功');\n CURRENT_USER = AVUserToLocalUser(user);\n onLoginFinish({ isAuto: true, user: CURRENT_USER });\n } else {\n onLoginFinish({ isAuto: true, error: 'User Not Login Yet' });\n }\n },\n\n // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权\n login: async (\n type: LoginType,\n devAuthData: LoginAuthDataType | null = null,\n loadingCallback: Function\n ) => {\n // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData\n const cuurentUser = await AV.User.currentAsync();\n if (cuurentUser) {\n await LoginManager.autoLogin();\n return;\n }\n\n // 改为注入 delegate\n if (__DEV__) {\n if (devAuthData) {\n doLeanCloudLogin(devAuthData, undefined, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n return;\n }\n }\n\n if (type === LoginType.LoginTypeApple) {\n const { user, email, identityToken, error, code } =\n await AppleLoginUtil.requestAppleUserForLogin();\n if (!user || error) {\n onLoginFinish({ error, code });\n return;\n } else {\n let userData = {\n userId: user,\n email: email,\n authData: {\n openid: user,\n access_token: identityToken,\n expires_in: 99999999,\n loginType: 'apple',\n },\n };\n\n AppleLoginUtil.fetchAndUpdateCredentialState(\n userData.userId,\n ({ result, error: error2 }: { result: number; error: any }) => {\n if (error || result !== LoginState.AUTHORIZED) {\n onLoginFinish({ error: error2 });\n } else {\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user: loginUser, error: error3 }) => {\n onLoginFinish({ user: loginUser, error: error3 });\n }\n );\n }\n }\n );\n }\n } else if (type === LoginType.LoginTypeWeChat) {\n WeChatLoginUtil.doLogin(\n WeiXinId,\n WeiXinSecret,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeVisitor) {\n const uniqueId = getUniqueIdSync();\n console.log(uniqueId);\n let userData = {\n nickname: i18n.t('游客'),\n authData: {\n openid: uniqueId,\n access_token: uniqueId,\n expires_in: 99999999,\n loginType: 'visitor',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(userData.authData, userData, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n } else {\n onLoginFinish({ error: i18n.t('未知登录类型,不应该走到这') });\n }\n },\n\n logOut: (callback: Function) => {\n console.log('onLogout');\n AV.User.logOut();\n CURRENT_USER = null;\n callback && callback();\n Notification.postNotification('onLogout');\n },\n\n isLogin: () => {\n return LoginManager.currentUser() != null;\n },\n\n isVisitor: () => {\n return (\n LoginManager.isLogin() &&\n LoginManager.currentUser()?.type === LoginType.LoginTypeVisitor\n );\n },\n\n currentUser: () => {\n // console.log('current user is ', CURRENT_USER);\n return CURRENT_USER;\n },\n\n batchUpdateUser: async (\n keys: string[],\n values: string[],\n callback: Function\n ) => {\n console.log('Batch Update User Begin: ' + keys + ' ' + values);\n const user = await AV.User.currentAsync();\n if (!user) {\n return;\n }\n const oldValues = [];\n for (let i = 0; i < keys.length; i++) {\n oldValues.push(user.get(keys[i]));\n user.set(keys[i], values[i]);\n }\n try {\n const newUser = await user.save();\n CURRENT_USER = AVUserToLocalUser(newUser);\n console.log('Batch Update User End', user);\n callback && callback();\n } catch (e) {\n console.error(e);\n for (let i = 0; i < keys.length; i++) {\n user.set(keys[i], oldValues[i]);\n }\n callback && callback(e);\n }\n },\n\n updateUser: (key: string, value: string, callback: Function) => {\n LoginManager.batchUpdateUser([key], [value], callback);\n },\n\n deleteUser: async (callback: Function) => {\n try {\n if (!CURRENT_USER) {\n return;\n }\n if (CURRENT_USER.type === LoginType.LoginTypeApple) {\n await AppleLoginUtil.requestDeleteAccount();\n }\n const user = await AV.User.currentAsync();\n console.log('get user success');\n await user.destroy();\n console.log('delete user success');\n callback();\n } catch (error) {\n console.error(error);\n callback(error);\n }\n },\n\n lastLoginType: () => {\n return PrefData.getValue(BuildInPrefs.LastLoginType);\n },\n\n fetchWeChatAvatar: (callback: Function) => {\n WeChatLoginUtil.doLogin(\n WeiXinId,\n WeiXinSecret,\n ({ headimgurl }: { headimgurl: string }) => {\n callback({ headimgurl });\n }\n );\n },\n};\n\nexport default LoginManager;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["EventEmitter","require","eventEmitter","ListenerToEvent","Notification","addListener","event","callback","key","toString","on","addListenerOnce","once","removeListener","removeAllListeners","keys","Object","postNotification","args","emit"],"sources":["Notification.ts"],"sourcesContent":["const EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\ninterface ListenerType {\n [key: string]: string;\n}\n\nconst ListenerToEvent: ListenerType = {};\n\nexport const Notification = {\n addListener: (event: string, callback: Function) => {\n const key = callback.toString();\n if (!ListenerToEvent[key]) {\n eventEmitter.on(event, callback);\n ListenerToEvent[key] = event;\n }\n return callback;\n },\n\n addListenerOnce: (event: string, callback: Function) => {\n eventEmitter.once(event, callback);\n },\n\n removeListener: (callback: Function) => {\n const key = callback.toString();\n const event = ListenerToEvent[key];\n delete ListenerToEvent[key];\n eventEmitter.removeListener(event, callback);\n },\n\n removeAllListeners: (event: string) => {\n const keys = Object.keys(ListenerToEvent);\n for (const key of keys) {\n if (ListenerToEvent[key] === event) {\n delete ListenerToEvent[key];\n }\n }\n eventEmitter.removeAllListeners(event);\n },\n\n postNotification: (event: string, args: object) => {\n eventEmitter.emit(event, args);\n },\n};\n"],"mappings":"AAAA,MAAMA,YAAY,GAAGC,OAAO,CAAC,QAAQ,CAAC,CAACD,YAAY;AACnD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;AAMvC,MAAMG,eAA6B,GAAG,CAAC,CAAC;AAExC,OAAO,MAAMC,YAAY,GAAG;EAC1BC,WAAW,EAAEA,CAACC,KAAa,EAAEC,QAAkB,KAAK;IAClD,MAAMC,GAAG,GAAGD,QAAQ,CAACE,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAACN,eAAe,CAACK,GAAG,CAAC,EAAE;MACzBN,YAAY,CAACQ,EAAE,CAACJ,KAAK,EAAEC,QAAQ,CAAC;MAChCJ,eAAe,CAACK,GAAG,CAAC,GAAGF,KAAK;IAC9B;IACA,OAAOC,QAAQ;EACjB,CAAC;EAEDI,eAAe,EAAEA,CAACL,KAAa,EAAEC,QAAkB,KAAK;IACtDL,YAAY,CAACU,IAAI,CAACN,KAAK,EAAEC,QAAQ,CAAC;EACpC,CAAC;EAEDM,cAAc,EAAGN,QAAkB,IAAK;IACtC,MAAMC,GAAG,GAAGD,QAAQ,CAACE,QAAQ,CAAC,CAAC;IAC/B,MAAMH,KAAK,GAAGH,eAAe,CAACK,GAAG,CAAC;IAClC,OAAOL,eAAe,CAACK,GAAG,CAAC;IAC3BN,YAAY,CAACW,cAAc,CAACP,KAAK,EAAEC,QAAQ,CAAC;EAC9C,CAAC;EAEDO,kBAAkB,EAAGR,KAAa,IAAK;IACrC,MAAMS,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACZ,eAAe,CAAC;IACzC,KAAK,MAAMK,GAAG,IAAIO,IAAI,EAAE;MACtB,IAAIZ,eAAe,CAACK,GAAG,CAAC,KAAKF,KAAK,EAAE;QAClC,OAAOH,eAAe,CAACK,GAAG,CAAC;MAC7B;IACF;IACAN,YAAY,CAACY,kBAAkB,CAACR,KAAK,CAAC;EACxC,CAAC;EAEDW,gBAAgB,EAAEA,CAACX,KAAa,EAAEY,IAAY,KAAK;IACjDhB,YAAY,CAACiB,IAAI,CAACb,KAAK,EAAEY,IAAI,CAAC;EAChC;AACF,CAAC"}
1
+ {"version":3,"names":["EventEmitter","require","eventEmitter","ListenerToEvent","Notification","addListener","event","callback","key","toString","on","addListenerOnce","once","removeListener","removeAllListeners","keys","Object","postNotification","args","emit"],"sources":["Notification.ts"],"sourcesContent":["const EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\ninterface ListenerType {\n [key: string]: string;\n}\n\nconst ListenerToEvent: ListenerType = {};\n\nexport const Notification = {\n addListener: (event: string, callback: Function) => {\n const key = callback.toString();\n if (!ListenerToEvent[key]) {\n eventEmitter.on(event, callback);\n ListenerToEvent[key] = event;\n }\n return callback;\n },\n\n addListenerOnce: (event: string, callback: Function) => {\n eventEmitter.once(event, callback);\n },\n\n removeListener: (callback: Function) => {\n const key = callback.toString();\n const event = ListenerToEvent[key];\n delete ListenerToEvent[key];\n eventEmitter.removeListener(event, callback);\n },\n\n removeAllListeners: (event: string) => {\n const keys = Object.keys(ListenerToEvent);\n for (const key of keys) {\n if (ListenerToEvent[key] === event) {\n delete ListenerToEvent[key];\n }\n }\n eventEmitter.removeAllListeners(event);\n },\n\n postNotification: (event: string, args?: object) => {\n eventEmitter.emit(event, args);\n },\n};\n"],"mappings":"AAAA,MAAMA,YAAY,GAAGC,OAAO,CAAC,QAAQ,CAAC,CAACD,YAAY;AACnD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;AAMvC,MAAMG,eAA6B,GAAG,CAAC,CAAC;AAExC,OAAO,MAAMC,YAAY,GAAG;EAC1BC,WAAW,EAAEA,CAACC,KAAa,EAAEC,QAAkB,KAAK;IAClD,MAAMC,GAAG,GAAGD,QAAQ,CAACE,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAACN,eAAe,CAACK,GAAG,CAAC,EAAE;MACzBN,YAAY,CAACQ,EAAE,CAACJ,KAAK,EAAEC,QAAQ,CAAC;MAChCJ,eAAe,CAACK,GAAG,CAAC,GAAGF,KAAK;IAC9B;IACA,OAAOC,QAAQ;EACjB,CAAC;EAEDI,eAAe,EAAEA,CAACL,KAAa,EAAEC,QAAkB,KAAK;IACtDL,YAAY,CAACU,IAAI,CAACN,KAAK,EAAEC,QAAQ,CAAC;EACpC,CAAC;EAEDM,cAAc,EAAGN,QAAkB,IAAK;IACtC,MAAMC,GAAG,GAAGD,QAAQ,CAACE,QAAQ,CAAC,CAAC;IAC/B,MAAMH,KAAK,GAAGH,eAAe,CAACK,GAAG,CAAC;IAClC,OAAOL,eAAe,CAACK,GAAG,CAAC;IAC3BN,YAAY,CAACW,cAAc,CAACP,KAAK,EAAEC,QAAQ,CAAC;EAC9C,CAAC;EAEDO,kBAAkB,EAAGR,KAAa,IAAK;IACrC,MAAMS,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACZ,eAAe,CAAC;IACzC,KAAK,MAAMK,GAAG,IAAIO,IAAI,EAAE;MACtB,IAAIZ,eAAe,CAACK,GAAG,CAAC,KAAKF,KAAK,EAAE;QAClC,OAAOH,eAAe,CAACK,GAAG,CAAC;MAC7B;IACF;IACAN,YAAY,CAACY,kBAAkB,CAACR,KAAK,CAAC;EACxC,CAAC;EAEDW,gBAAgB,EAAEA,CAACX,KAAa,EAAEY,IAAa,KAAK;IAClDhB,YAAY,CAACiB,IAAI,CAACb,KAAK,EAAEY,IAAI,CAAC;EAChC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["LoginState","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n AVUser: User;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n}\n"],"mappings":"AAUA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
1
+ {"version":3,"names":["LoginState","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n isNew?: boolean;\n AVUser: User;\n}\n\nexport interface LoginAuthDataType {\n openid: string;\n unionid?: string;\n access_token: string | null;\n expires_in: number;\n loginType: string;\n}\n\nexport interface LoginUserDataType {\n userId?: string;\n nickname?: string;\n headimgurl?: string;\n email?: string | null;\n authData: LoginAuthDataType;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n}\n"],"mappings":"AA2BA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
@@ -4,6 +4,7 @@ const {
4
4
  } = NativeModules;
5
5
  export default ReactNativeToolkit;
6
6
  export * from './AppleLoginUtil';
7
+ export * from './LoginManager';
7
8
  export * from './Notification';
8
9
  export * from './PrefData';
9
10
  export * from './ReportUtil';
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","ReactNativeToolkit"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\n\ntype ReactNativeToolkitType = {\n multiply(a: number, b: number): Promise<number>;\n};\n\nconst { ReactNativeToolkit } = NativeModules;\n\nexport default ReactNativeToolkit as ReactNativeToolkitType;\nexport * from './AppleLoginUtil';\nexport * from './Notification';\nexport * from './PrefData';\nexport * from './ReportUtil';\nexport * from './SentryManager';\nexport * from './SyncPrefData';\nexport * from './WeChatLoginUtil';\nexport * from './constant';\nexport * from './i18n';\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAM5C,MAAM;EAAEC;AAAmB,CAAC,GAAGD,aAAa;AAE5C,eAAeC,kBAAkB;AACjC,cAAc,kBAAkB;AAChC,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,YAAY;AAC1B,cAAc,QAAQ"}
1
+ {"version":3,"names":["NativeModules","ReactNativeToolkit"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\n\ntype ReactNativeToolkitType = {\n multiply(a: number, b: number): Promise<number>;\n};\n\nconst { ReactNativeToolkit } = NativeModules;\n\nexport default ReactNativeToolkit as ReactNativeToolkitType;\nexport * from './AppleLoginUtil';\nexport * from './LoginManager';\nexport * from './Notification';\nexport * from './PrefData';\nexport * from './ReportUtil';\nexport * from './SentryManager';\nexport * from './SyncPrefData';\nexport * from './WeChatLoginUtil';\nexport * from './constant';\nexport * from './i18n';\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAM5C,MAAM;EAAEC;AAAmB,CAAC,GAAGD,aAAa;AAE5C,eAAeC,kBAAkB;AACjC,cAAc,kBAAkB;AAChC,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,YAAY;AAC1B,cAAc,QAAQ"}
@@ -0,0 +1,17 @@
1
+ import { LoginType } from '@norcy/react-native-toolkit';
2
+ import { LoginAuthDataType, UserType } from './constant';
3
+ declare const LoginManager: {
4
+ setup: (WeChatId: string, WeChatSecret: string) => void;
5
+ autoLogin: () => Promise<void>;
6
+ login: (type: LoginType, devAuthData: LoginAuthDataType | null | undefined, loadingCallback: Function) => Promise<void>;
7
+ logOut: (callback: Function) => void;
8
+ isLogin: () => boolean;
9
+ isVisitor: () => boolean;
10
+ currentUser: () => UserType | null;
11
+ batchUpdateUser: (keys: string[], values: string[], callback: Function) => Promise<void>;
12
+ updateUser: (key: string, value: string, callback: Function) => void;
13
+ deleteUser: (callback: Function) => Promise<void>;
14
+ lastLoginType: () => any;
15
+ fetchWeChatAvatar: (callback: Function) => void;
16
+ };
17
+ export default LoginManager;
@@ -3,5 +3,5 @@ export declare const Notification: {
3
3
  addListenerOnce: (event: string, callback: Function) => void;
4
4
  removeListener: (callback: Function) => void;
5
5
  removeAllListeners: (event: string) => void;
6
- postNotification: (event: string, args: object) => void;
6
+ postNotification: (event: string, args?: object) => void;
7
7
  };
@@ -4,8 +4,23 @@ export interface UserType {
4
4
  email: string;
5
5
  headimgurl: string;
6
6
  type: number;
7
+ isNew?: boolean;
7
8
  AVUser: User;
8
9
  }
10
+ export interface LoginAuthDataType {
11
+ openid: string;
12
+ unionid?: string;
13
+ access_token: string | null;
14
+ expires_in: number;
15
+ loginType: string;
16
+ }
17
+ export interface LoginUserDataType {
18
+ userId?: string;
19
+ nickname?: string;
20
+ headimgurl?: string;
21
+ email?: string | null;
22
+ authData: LoginAuthDataType;
23
+ }
9
24
  export declare enum LoginState {
10
25
  NOTLOGIN = 0,
11
26
  AUTHORIZED = 1
@@ -4,6 +4,7 @@ type ReactNativeToolkitType = {
4
4
  declare const _default: ReactNativeToolkitType;
5
5
  export default _default;
6
6
  export * from './AppleLoginUtil';
7
+ export * from './LoginManager';
7
8
  export * from './Notification';
8
9
  export * from './PrefData';
9
10
  export * from './ReportUtil';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",