MCPcopy Create free account
hub / github.com/MALSync/MALSync / multiple

Function multiple

src/background/releaseProgress.ts:109–210  ·  view source on GitHub ↗
(Array: listElement[], type, logger = con.m('release'))

Source from the content-addressed store, hash-verified

107}
108
109async function multiple(Array: listElement[], type, logger = con.m('release')) {
110 if (!Array) {
111 logger.log('No MAL Id List');
112 } else {
113 Array.forEach(el => {
114 let mode = el.options!.p;
115 if (!mode) mode = 'default';
116 logger.m(el.apiCacheKey).log(el.title, el.cacheKey, el.apiCacheKey, `Mode: ${mode}`);
117 });
118 }
119
120 if (!api.settings.get('epPredictions')) {
121 logger.log('epPredictions disabled');
122 return;
123 }
124
125 async function asyncForEach(array, callback) {
126 for (let index = 0; index < array.length; index++) {
127 await callback(array[index], index, array);
128 }
129 }
130
131 const remoteUpdateList: listElement[] = [];
132 await asyncForEach(Array, async el => {
133 if (!el.apiCacheKey) return;
134
135 const releaseItem: undefined | releaseItemInterface = await api.storage.get(
136 `release/${type}/${el.cacheKey}`,
137 );
138
139 if (releaseItem && releaseItem.value) {
140 el.fn.progress = releaseItem.value;
141 }
142
143 let mode = el.options!.p;
144 if (!mode) mode = 'default';
145 logger.m(el.apiCacheKey).m('Load').log(releaseItem);
146
147 if (releaseItem && releaseItem.mode && releaseItem.mode !== mode) {
148 remoteUpdateList.push(el);
149 } else if (
150 releaseItem &&
151 releaseItem.timestamp &&
152 Date.now() - releaseItem.timestamp < 2 * 60 * 1000
153 ) {
154 logger.m(el.apiCacheKey).log('Up to date');
155 } else if (
156 releaseItem &&
157 releaseItem.finished &&
158 releaseItem.timestamp &&
159 Date.now() - releaseItem.timestamp < 7 * 24 * 60 * 60 * 1000
160 ) {
161 logger.m(el.apiCacheKey).log('Finished');
162 } else if (
163 releaseItem &&
164 !releaseItem.value &&
165 releaseItem.timestamp &&
166 Date.now() - releaseItem.timestamp < 1 * 24 * 60 * 60 * 1000

Callers 1

listUpdateWithPOSTFunction · 0.85

Calls 6

predictionXhrPOSTFunction · 0.90
getProgressFunction · 0.90
notificationCheckFunction · 0.90
asyncForEachFunction · 0.85
getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected