@norcy/react-native-toolkit 0.1.130 → 0.1.131

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.
@@ -27,35 +27,6 @@ const _filterByVersion = items => {
27
27
  }
28
28
  return ret;
29
29
  };
30
- const _filterByVip = items => {
31
- let ret = [];
32
- const isVip = _VipManager.VipManager.isVip();
33
- const isForeverVip = _VipManager.VipManager.isForeverVip();
34
- for (const item of items) {
35
- const vipFilter = item.vipFilter;
36
- if (vipFilter === 0 || vipFilter === 1 && !isVip || vipFilter === 2 && !isForeverVip) {
37
- ret.push(item);
38
- }
39
- }
40
- return ret;
41
- };
42
- const _filterByUser = items => {
43
- let ret = [];
44
- for (const item of items) {
45
- const users = item.users;
46
- if (users !== null && users !== void 0 && users.length) {
47
- if (_LoginManager.LoginManager.isLogin()) {
48
- var _LoginManager$current;
49
- if (users !== null && users !== void 0 && users.includes((_LoginManager$current = _LoginManager.LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.AVUser.get('objectId'))) {
50
- ret.push(item);
51
- }
52
- }
53
- } else {
54
- ret.push(item);
55
- }
56
- }
57
- return ret;
58
- };
59
30
  const _handleReadMessages = items => {
60
31
  if (__DEV__) {
61
32
  // return items;
@@ -104,11 +75,10 @@ const _handleReadMessages = items => {
104
75
  };
105
76
  let isDataReady = false;
106
77
  let isConfigStateReady = false;
107
- let isVipStateReady = false;
108
78
  let isNetwordDataReady = false;
109
79
  let OnlineItems = [];
110
80
  const _handleResponse = customFilter => {
111
- if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady || !isVipStateReady) {
81
+ if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady) {
112
82
  return;
113
83
  }
114
84
  if (_VersionManager.VersionManager.isDanger()) {
@@ -116,8 +86,6 @@ const _handleResponse = customFilter => {
116
86
  }
117
87
  MyMessages = OnlineItems.map(item => _Tool.Tool.jsonify(item));
118
88
  MyMessages = _filterByVersion(MyMessages);
119
- MyMessages = _filterByVip(MyMessages);
120
- MyMessages = _filterByUser(MyMessages);
121
89
  if (customFilter) {
122
90
  MyMessages = customFilter(MyMessages);
123
91
  }
@@ -136,11 +104,7 @@ const _handleResponse = customFilter => {
136
104
  const MessageModel = exports.MessageModel = {
137
105
  init: customFilter => {
138
106
  _Notification.Notification.addListener('onVipRefresh', () => {
139
- // 监听多次,直到成功,整个生命周期最多处理一次
140
- if (!isVipStateReady) {
141
- isVipStateReady = true;
142
- _handleResponse(customFilter);
143
- }
107
+ MessageModel.fetch(customFilter);
144
108
  });
145
109
  _ConfigDataModel.ConfigDataModel.addListener(() => {
146
110
  if (!isConfigStateReady) {
@@ -157,22 +121,34 @@ const MessageModel = exports.MessageModel = {
157
121
  if (!isAuto && user && !error) {
158
122
  isDataReady = false;
159
123
  isConfigStateReady = false;
160
- isVipStateReady = false;
161
124
  isNetwordDataReady = false;
162
125
  OnlineItems = [];
163
126
  MessageModel.fetch(customFilter);
164
127
  }
165
128
  });
166
- MessageModel.fetch(customFilter);
167
129
  },
168
130
  fetch: customFilter => {
131
+ var _LoginManager$current;
169
132
  // 确保可重入,但如果网络一直出错的话,每次调用都会一直发
170
133
  if (isNetwordDataReady) {
171
134
  return;
172
135
  }
173
- const query = new AV.Query('Message');
174
- query.equalTo('valid', true).equalTo(_reactNative.Platform.OS, true).descending('updatedAt');
175
- query.find().then(async items => {
136
+ let query = new AV.Query('Message');
137
+ query.equalTo('valid', true).equalTo(_reactNative.Platform.OS, true);
138
+ if (_VipManager.VipManager.isForeverVip()) {
139
+ query.equalTo('vipFilter', 0);
140
+ } else if (_VipManager.VipManager.isVip()) {
141
+ // 这里如果后续增加枚举,就会有问题
142
+ query.notEqualTo('vipFilter', 1);
143
+ }
144
+ let userQuery = new AV.Query('Message').sizeEqualTo('users', 0);
145
+ const userId = (_LoginManager$current = _LoginManager.LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.AVUser.get('objectId');
146
+ if (userId) {
147
+ const selectUserQuery = new AV.Query('Message').equalTo('users', userId);
148
+ userQuery = AV.Query.or(userQuery, selectUserQuery);
149
+ }
150
+ query = AV.Query.and(query, userQuery);
151
+ query.descending('updatedAt').find().then(async items => {
176
152
  console.log('Message 抓取完毕');
177
153
  isNetwordDataReady = true;
178
154
  OnlineItems = items;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_ConfigDataModel","_Frequence","_LoginManager","_Notification","_PrefData","_Tool","_VersionManager","_VipManager","AV","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","VersionManager","isValidVersion","minVer","maxVer","push","_filterByVip","isVip","VipManager","isForeverVip","vipFilter","_filterByUser","users","length","LoginManager","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","PrefData","getValue","BuildInPrefs","Messages","objectId","isRead","_item$key","key","ConfigDataModel","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","FrequenceManager","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","exports","init","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","Platform","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinish","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n FrequenceManager.markFinish(freConfig);\n }\n\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_ConfigDataModel","_Frequence","_LoginManager","_Notification","_PrefData","_Tool","_VersionManager","_VipManager","AV","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","VersionManager","isValidVersion","minVer","maxVer","push","_handleReadMessages","__DEV__","readMsgs","PrefData","getValue","BuildInPrefs","Messages","includes","objectId","isRead","_item$key","key","ConfigDataModel","get","hasNewAppVer","updatedAt","Date","toString","length","freConfig","limit","gap","FrequenceManager","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","exports","init","Notification","addListener","fetch","_ref","isAuto","user","error","_LoginManager$current","query","Query","equalTo","Platform","OS","VipManager","isForeverVip","isVip","notEqualTo","userQuery","sizeEqualTo","userId","LoginManager","currentUser","AVUser","selectUserQuery","or","and","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinish","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n MessageModel.fetch(customFilter);\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n let query = new AV.Query('Message');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n\n if (VipManager.isForeverVip()) {\n query.equalTo('vipFilter', 0);\n } else if (VipManager.isVip()) {\n // 这里如果后续增加枚举,就会有问题\n query.notEqualTo('vipFilter', 1);\n }\n\n let userQuery = new AV.Query('Message').sizeEqualTo('users', 0);\n const userId = LoginManager.currentUser()?.AVUser.get('objectId');\n if (userId) {\n const selectUserQuery = new AV.Query('Message').equalTo('users', userId);\n userQuery = AV.Query.or(userQuery, selectUserQuery);\n }\n query = AV.Query.and(query, userQuery);\n\n query\n .descending('updatedAt')\n .find()\n .then(async (items: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n FrequenceManager.markFinish(freConfig);\n }\n\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
@@ -21,35 +21,6 @@ const _filterByVersion = items => {
21
21
  }
22
22
  return ret;
23
23
  };
24
- const _filterByVip = items => {
25
- let ret = [];
26
- const isVip = VipManager.isVip();
27
- const isForeverVip = VipManager.isForeverVip();
28
- for (const item of items) {
29
- const vipFilter = item.vipFilter;
30
- if (vipFilter === 0 || vipFilter === 1 && !isVip || vipFilter === 2 && !isForeverVip) {
31
- ret.push(item);
32
- }
33
- }
34
- return ret;
35
- };
36
- const _filterByUser = items => {
37
- let ret = [];
38
- for (const item of items) {
39
- const users = item.users;
40
- if (users !== null && users !== void 0 && users.length) {
41
- if (LoginManager.isLogin()) {
42
- var _LoginManager$current;
43
- if (users !== null && users !== void 0 && users.includes((_LoginManager$current = LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.AVUser.get('objectId'))) {
44
- ret.push(item);
45
- }
46
- }
47
- } else {
48
- ret.push(item);
49
- }
50
- }
51
- return ret;
52
- };
53
24
  const _handleReadMessages = items => {
54
25
  if (__DEV__) {
55
26
  // return items;
@@ -98,11 +69,10 @@ const _handleReadMessages = items => {
98
69
  };
99
70
  let isDataReady = false;
100
71
  let isConfigStateReady = false;
101
- let isVipStateReady = false;
102
72
  let isNetwordDataReady = false;
103
73
  let OnlineItems = [];
104
74
  const _handleResponse = customFilter => {
105
- if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady || !isVipStateReady) {
75
+ if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady) {
106
76
  return;
107
77
  }
108
78
  if (VersionManager.isDanger()) {
@@ -110,8 +80,6 @@ const _handleResponse = customFilter => {
110
80
  }
111
81
  MyMessages = OnlineItems.map(item => Tool.jsonify(item));
112
82
  MyMessages = _filterByVersion(MyMessages);
113
- MyMessages = _filterByVip(MyMessages);
114
- MyMessages = _filterByUser(MyMessages);
115
83
  if (customFilter) {
116
84
  MyMessages = customFilter(MyMessages);
117
85
  }
@@ -130,11 +98,7 @@ const _handleResponse = customFilter => {
130
98
  export const MessageModel = {
131
99
  init: customFilter => {
132
100
  Notification.addListener('onVipRefresh', () => {
133
- // 监听多次,直到成功,整个生命周期最多处理一次
134
- if (!isVipStateReady) {
135
- isVipStateReady = true;
136
- _handleResponse(customFilter);
137
- }
101
+ MessageModel.fetch(customFilter);
138
102
  });
139
103
  ConfigDataModel.addListener(() => {
140
104
  if (!isConfigStateReady) {
@@ -151,22 +115,34 @@ export const MessageModel = {
151
115
  if (!isAuto && user && !error) {
152
116
  isDataReady = false;
153
117
  isConfigStateReady = false;
154
- isVipStateReady = false;
155
118
  isNetwordDataReady = false;
156
119
  OnlineItems = [];
157
120
  MessageModel.fetch(customFilter);
158
121
  }
159
122
  });
160
- MessageModel.fetch(customFilter);
161
123
  },
162
124
  fetch: customFilter => {
125
+ var _LoginManager$current;
163
126
  // 确保可重入,但如果网络一直出错的话,每次调用都会一直发
164
127
  if (isNetwordDataReady) {
165
128
  return;
166
129
  }
167
- const query = new AV.Query('Message');
168
- query.equalTo('valid', true).equalTo(Platform.OS, true).descending('updatedAt');
169
- query.find().then(async items => {
130
+ let query = new AV.Query('Message');
131
+ query.equalTo('valid', true).equalTo(Platform.OS, true);
132
+ if (VipManager.isForeverVip()) {
133
+ query.equalTo('vipFilter', 0);
134
+ } else if (VipManager.isVip()) {
135
+ // 这里如果后续增加枚举,就会有问题
136
+ query.notEqualTo('vipFilter', 1);
137
+ }
138
+ let userQuery = new AV.Query('Message').sizeEqualTo('users', 0);
139
+ const userId = (_LoginManager$current = LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.AVUser.get('objectId');
140
+ if (userId) {
141
+ const selectUserQuery = new AV.Query('Message').equalTo('users', userId);
142
+ userQuery = AV.Query.or(userQuery, selectUserQuery);
143
+ }
144
+ query = AV.Query.and(query, userQuery);
145
+ query.descending('updatedAt').find().then(async items => {
170
146
  console.log('Message 抓取完毕');
171
147
  isNetwordDataReady = true;
172
148
  OnlineItems = items;
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","ConfigDataModel","FrequenceManager","LoginManager","Notification","BuildInPrefs","PrefData","Tool","VersionManager","VipManager","AV","require","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","isValidVersion","minVer","maxVer","push","_filterByVip","isVip","isForeverVip","vipFilter","_filterByUser","users","length","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","getValue","Messages","objectId","isRead","_item$key","key","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","init","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinish","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n FrequenceManager.markFinish(freConfig);\n }\n\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","ConfigDataModel","FrequenceManager","LoginManager","Notification","BuildInPrefs","PrefData","Tool","VersionManager","VipManager","AV","require","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","isValidVersion","minVer","maxVer","push","_handleReadMessages","__DEV__","readMsgs","getValue","Messages","includes","objectId","isRead","_item$key","key","get","hasNewAppVer","updatedAt","Date","toString","length","freConfig","limit","gap","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","init","addListener","fetch","_ref","isAuto","user","error","_LoginManager$current","query","Query","equalTo","OS","isForeverVip","isVip","notEqualTo","userQuery","sizeEqualTo","userId","currentUser","AVUser","selectUserQuery","or","and","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinish","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n MessageModel.fetch(customFilter);\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n let query = new AV.Query('Message');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n\n if (VipManager.isForeverVip()) {\n query.equalTo('vipFilter', 0);\n } else if (VipManager.isVip()) {\n // 这里如果后续增加枚举,就会有问题\n query.notEqualTo('vipFilter', 1);\n }\n\n let userQuery = new AV.Query('Message').sizeEqualTo('users', 0);\n const userId = LoginManager.currentUser()?.AVUser.get('objectId');\n if (userId) {\n const selectUserQuery = new AV.Query('Message').equalTo('users', userId);\n userQuery = AV.Query.or(userQuery, selectUserQuery);\n }\n query = AV.Query.and(query, userQuery);\n\n query\n .descending('updatedAt')\n .find()\n .then(async (items: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n FrequenceManager.markFinish(freConfig);\n }\n\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.130",
3
+ "version": "0.1.131",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -46,42 +46,6 @@ const _filterByVersion = (items: Message[]): Message[] => {
46
46
  return ret;
47
47
  };
48
48
 
49
- const _filterByVip = (items: Message[]): Message[] => {
50
- let ret: Message[] = [];
51
- const isVip = VipManager.isVip();
52
- const isForeverVip = VipManager.isForeverVip();
53
- for (const item of items) {
54
- const vipFilter = item.vipFilter;
55
- if (
56
- vipFilter === 0 ||
57
- (vipFilter === 1 && !isVip) ||
58
- (vipFilter === 2 && !isForeverVip)
59
- ) {
60
- ret.push(item);
61
- }
62
- }
63
- return ret;
64
- };
65
-
66
- const _filterByUser = (items: Message[]): Message[] => {
67
- let ret: Message[] = [];
68
- for (const item of items) {
69
- const users = item.users;
70
- if (users?.length) {
71
- if (LoginManager.isLogin()) {
72
- if (
73
- users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))
74
- ) {
75
- ret.push(item);
76
- }
77
- }
78
- } else {
79
- ret.push(item);
80
- }
81
- }
82
- return ret;
83
- };
84
-
85
49
  const _handleReadMessages = (items: Message[]): Message[] => {
86
50
  if (__DEV__) {
87
51
  // return items;
@@ -136,17 +100,11 @@ const _handleReadMessages = (items: Message[]): Message[] => {
136
100
 
137
101
  let isDataReady = false;
138
102
  let isConfigStateReady = false;
139
- let isVipStateReady = false;
140
103
  let isNetwordDataReady = false;
141
104
  let OnlineItems: Object[] = [];
142
105
 
143
106
  const _handleResponse = (customFilter?: MessageFilter) => {
144
- if (
145
- !isConfigStateReady ||
146
- !OnlineItems.length ||
147
- !isNetwordDataReady ||
148
- !isVipStateReady
149
- ) {
107
+ if (!isConfigStateReady || !OnlineItems.length || !isNetwordDataReady) {
150
108
  return;
151
109
  }
152
110
 
@@ -156,8 +114,6 @@ const _handleResponse = (customFilter?: MessageFilter) => {
156
114
 
157
115
  MyMessages = OnlineItems.map((item) => Tool.jsonify(item));
158
116
  MyMessages = _filterByVersion(MyMessages);
159
- MyMessages = _filterByVip(MyMessages);
160
- MyMessages = _filterByUser(MyMessages);
161
117
  if (customFilter) {
162
118
  MyMessages = customFilter(MyMessages);
163
119
  }
@@ -180,11 +136,7 @@ export type MessageFilter = (oldMessage: Message[]) => Message[];
180
136
  export const MessageModel = {
181
137
  init: (customFilter?: MessageFilter) => {
182
138
  Notification.addListener('onVipRefresh', () => {
183
- // 监听多次,直到成功,整个生命周期最多处理一次
184
- if (!isVipStateReady) {
185
- isVipStateReady = true;
186
- _handleResponse(customFilter);
187
- }
139
+ MessageModel.fetch(customFilter);
188
140
  });
189
141
 
190
142
  ConfigDataModel.addListener(() => {
@@ -200,15 +152,12 @@ export const MessageModel = {
200
152
  if (!isAuto && user && !error) {
201
153
  isDataReady = false;
202
154
  isConfigStateReady = false;
203
- isVipStateReady = false;
204
155
  isNetwordDataReady = false;
205
156
  OnlineItems = [];
206
157
  MessageModel.fetch(customFilter);
207
158
  }
208
159
  }
209
160
  );
210
-
211
- MessageModel.fetch(customFilter);
212
161
  },
213
162
 
214
163
  fetch: (customFilter?: MessageFilter) => {
@@ -217,12 +166,26 @@ export const MessageModel = {
217
166
  return;
218
167
  }
219
168
 
220
- const query = new AV.Query('Message');
221
- query
222
- .equalTo('valid', true)
223
- .equalTo(Platform.OS, true)
224
- .descending('updatedAt');
169
+ let query = new AV.Query('Message');
170
+ query.equalTo('valid', true).equalTo(Platform.OS, true);
171
+
172
+ if (VipManager.isForeverVip()) {
173
+ query.equalTo('vipFilter', 0);
174
+ } else if (VipManager.isVip()) {
175
+ // 这里如果后续增加枚举,就会有问题
176
+ query.notEqualTo('vipFilter', 1);
177
+ }
178
+
179
+ let userQuery = new AV.Query('Message').sizeEqualTo('users', 0);
180
+ const userId = LoginManager.currentUser()?.AVUser.get('objectId');
181
+ if (userId) {
182
+ const selectUserQuery = new AV.Query('Message').equalTo('users', userId);
183
+ userQuery = AV.Query.or(userQuery, selectUserQuery);
184
+ }
185
+ query = AV.Query.and(query, userQuery);
186
+
225
187
  query
188
+ .descending('updatedAt')
226
189
  .find()
227
190
  .then(async (items: Object[]) => {
228
191
  console.log('Message 抓取完毕');