MCPcopy Index your code
hub / github.com/MALSync/MALSync / single

Function single

src/background/releaseProgressUtils.ts:81–185  ·  view source on GitHub ↗
(
  el: {
    uid: number;
    apiCacheKey: number | string | null;
    title: string;
    cacheKey: string;
    watchedEp: number;
    single: any;
    xhr?: object;
  },
  type,
  mode = 'default',
  logger = con.m('release'),
)

Source from the content-addressed store, hash-verified

79}
80
81export async function single(
82 el: {
83 uid: number;
84 apiCacheKey: number | string | null;
85 title: string;
86 cacheKey: string;
87 watchedEp: number;
88 single: any;
89 xhr?: object;
90 },
91 type,
92 mode = 'default',
93 logger = con.m('release'),
94) {
95 if (!mode) mode = 'default';
96 logger = logger.m(el.uid.toString());
97 logger.log(el.title, el.cacheKey, el.apiCacheKey, `Mode: ${mode}`);
98 if (!el.apiCacheKey) {
99 logger.log('No Api Cache Id');
100 return;
101 }
102 if (!api.settings.get('epPredictions')) {
103 logger.log('epPredictions disabled');
104 return;
105 }
106 const releaseItem: undefined | releaseItemInterface = await api.storage.get(
107 `release/${type}/${el.cacheKey}`,
108 );
109
110 logger.m('Load').log(releaseItem);
111
112 let force = false;
113
114 if (releaseItem && releaseItem.mode && releaseItem.mode !== mode) force = true;
115
116 if (
117 releaseItem &&
118 releaseItem.timestamp &&
119 Date.now() - releaseItem.timestamp < 2 * 60 * 1000 &&
120 !force
121 ) {
122 logger.log('Up to date');
123 return;
124 }
125
126 if (
127 releaseItem &&
128 releaseItem.finished &&
129 releaseItem.timestamp &&
130 Date.now() - releaseItem.timestamp < 7 * 24 * 60 * 60 * 1000 &&
131 !force
132 ) {
133 logger.log('Finished');
134 return;
135 }
136
137 if (
138 releaseItem &&

Callers

nothing calls this directly

Calls 5

predictionXhrGETFunction · 0.85
notificationCheckFunction · 0.85
getProgressFunction · 0.70
getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected