@irfanshadikrishad/anilist 1.0.1 → 1.0.3

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.
@@ -13,9 +13,11 @@ import { aniListEndpoint, getNextSeasonAndYear, getTitle } from "./workers.js";
13
13
  import { deleteMangaEntryMutation, deleteMediaEntryMutation, popularQuery, trendingQuery, upcomingAnimesQuery, } from "./queries.js";
14
14
  import { currentUserAnimeList, currentUserMangaList } from "./queries.js";
15
15
  import { isLoggedIn, currentUsersId, retriveAccessToken } from "./auth.js";
16
+ import { addAnimeToListMutation, addMangaToListMutation } from "./mutations.js";
17
+ import { fetcher } from "./fetcher.js";
16
18
  function getTrending(count) {
17
19
  return __awaiter(this, void 0, void 0, function* () {
18
- var _a, _b, _c;
20
+ var _a, _b, _c, _d;
19
21
  try {
20
22
  const request = yield fetch(aniListEndpoint, {
21
23
  method: "POST",
@@ -31,13 +33,57 @@ function getTrending(count) {
31
33
  if (request.status === 200) {
32
34
  const media = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.media;
33
35
  if ((media === null || media === void 0 ? void 0 : media.length) > 0) {
34
- media.map((tr, idx) => {
35
- console.log(`${idx + 1}\t${getTitle(tr === null || tr === void 0 ? void 0 : tr.title)}`);
36
- });
36
+ const { selectedAnime } = yield inquirer.prompt([
37
+ {
38
+ type: "list",
39
+ name: "selectedAnime",
40
+ message: "Select anime to add to the list:",
41
+ choices: media.map((upx, idx) => ({
42
+ name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
43
+ value: upx === null || upx === void 0 ? void 0 : upx.id,
44
+ })),
45
+ pageSize: 10,
46
+ },
47
+ ]);
48
+ // Where to save
49
+ const { selectedListType } = yield inquirer.prompt([
50
+ {
51
+ type: "list",
52
+ name: "selectedListType",
53
+ message: "Select the list where you want to save this anime:",
54
+ choices: [
55
+ { name: "Planning", value: "PLANNING" },
56
+ { name: "Watching", value: "CURRENT" },
57
+ { name: "Completed", value: "COMPLETED" },
58
+ { name: "Paused", value: "PAUSED" },
59
+ { name: "Dropped", value: "DROPPED" },
60
+ ],
61
+ },
62
+ ]);
63
+ // Lets save to the list now
64
+ const ISLOGGEDIN = yield isLoggedIn();
65
+ if (ISLOGGEDIN) {
66
+ const query = addAnimeToListMutation;
67
+ const variables = {
68
+ mediaId: selectedAnime,
69
+ status: selectedListType,
70
+ };
71
+ const response = yield fetcher(query, variables);
72
+ if (response) {
73
+ const saved = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.SaveMediaListEntry;
74
+ console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
75
+ }
76
+ }
77
+ else {
78
+ console.error(`Please log in first to use this feature.`);
79
+ }
80
+ }
81
+ else {
82
+ console.log(`\nNo trending available at the moment.`);
37
83
  }
38
84
  }
39
85
  else {
40
- console.log(`Something went wrong. ${(_c = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _c === void 0 ? void 0 : _c.message}`);
86
+ console.log(`Something went wrong. ${(_d = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _d === void 0 ? void 0 : _d.message}`);
41
87
  }
42
88
  }
43
89
  catch (error) {
@@ -47,7 +93,7 @@ function getTrending(count) {
47
93
  }
48
94
  function getPopular(count) {
49
95
  return __awaiter(this, void 0, void 0, function* () {
50
- var _a, _b, _c;
96
+ var _a, _b, _c, _d;
51
97
  try {
52
98
  const request = yield fetch(aniListEndpoint, {
53
99
  method: "POST",
@@ -63,13 +109,57 @@ function getPopular(count) {
63
109
  if (request.status === 200) {
64
110
  const media = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.media;
65
111
  if ((media === null || media === void 0 ? void 0 : media.length) > 0) {
66
- media.map((tr, idx) => {
67
- console.log(`${idx + 1}\t${getTitle(tr === null || tr === void 0 ? void 0 : tr.title)}`);
68
- });
112
+ const { selectedAnime } = yield inquirer.prompt([
113
+ {
114
+ type: "list",
115
+ name: "selectedAnime",
116
+ message: "Select anime to add to the list:",
117
+ choices: media.map((upx, idx) => ({
118
+ name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
119
+ value: upx === null || upx === void 0 ? void 0 : upx.id,
120
+ })),
121
+ pageSize: 10,
122
+ },
123
+ ]);
124
+ // Where to save
125
+ const { selectedListType } = yield inquirer.prompt([
126
+ {
127
+ type: "list",
128
+ name: "selectedListType",
129
+ message: "Select the list where you want to save this anime:",
130
+ choices: [
131
+ { name: "Planning", value: "PLANNING" },
132
+ { name: "Watching", value: "CURRENT" },
133
+ { name: "Completed", value: "COMPLETED" },
134
+ { name: "Paused", value: "PAUSED" },
135
+ { name: "Dropped", value: "DROPPED" },
136
+ ],
137
+ },
138
+ ]);
139
+ // Lets save to the list now
140
+ const ISLOGGEDIN = yield isLoggedIn();
141
+ if (ISLOGGEDIN) {
142
+ const query = addAnimeToListMutation;
143
+ const variables = {
144
+ mediaId: selectedAnime,
145
+ status: selectedListType,
146
+ };
147
+ const response = yield fetcher(query, variables);
148
+ if (response) {
149
+ const saved = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.SaveMediaListEntry;
150
+ console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
151
+ }
152
+ }
153
+ else {
154
+ console.error(`Please log in first to use this feature.`);
155
+ }
156
+ }
157
+ else {
158
+ console.log(`No popular available at this moment.`);
69
159
  }
70
160
  }
71
161
  else {
72
- console.log(`Something went wrong. ${(_c = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _c === void 0 ? void 0 : _c.message}`);
162
+ console.log(`Something went wrong. ${(_d = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _d === void 0 ? void 0 : _d.message}`);
73
163
  }
74
164
  }
75
165
  catch (error) {
@@ -79,7 +169,7 @@ function getPopular(count) {
79
169
  }
80
170
  function loggedInUsersAnimeLists() {
81
171
  return __awaiter(this, void 0, void 0, function* () {
82
- var _a, _b, _c;
172
+ var _a, _b, _c, _d, _e;
83
173
  try {
84
174
  const loggedIn = yield isLoggedIn();
85
175
  if (loggedIn) {
@@ -99,28 +189,81 @@ function loggedInUsersAnimeLists() {
99
189
  const response = yield request.json();
100
190
  if (request.status === 200) {
101
191
  const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
102
- const { selectedList } = yield inquirer.prompt([
103
- {
104
- type: "list",
105
- name: "selectedList",
106
- message: "Select an anime list:",
107
- choices: lists.map((list) => list.name),
108
- },
109
- ]);
110
- const selectedEntries = lists.find((list) => list.name === selectedList);
111
- if (selectedEntries) {
112
- console.log(`\nEntries for '${selectedEntries.name}':`);
113
- selectedEntries.entries.forEach((entry, idx) => {
114
- var _a;
115
- console.log(`${idx + 1}. ${getTitle((_a = entry === null || entry === void 0 ? void 0 : entry.media) === null || _a === void 0 ? void 0 : _a.title)}`);
116
- });
192
+ if (lists.length > 0) {
193
+ const { selectedList } = yield inquirer.prompt([
194
+ {
195
+ type: "list",
196
+ name: "selectedList",
197
+ message: "Select an anime list:",
198
+ choices: lists.map((list) => list.name),
199
+ },
200
+ ]);
201
+ const selectedEntries = lists.find((list) => list.name === selectedList);
202
+ if (selectedEntries) {
203
+ console.log(`\nEntries for '${selectedEntries.name}':`);
204
+ if (((_c = selectedEntries === null || selectedEntries === void 0 ? void 0 : selectedEntries.entries) === null || _c === void 0 ? void 0 : _c.length) > 0) {
205
+ const { selectedAnime } = yield inquirer.prompt([
206
+ {
207
+ type: "list",
208
+ name: "selectedAnime",
209
+ message: "Select anime to add to the list:",
210
+ choices: selectedEntries === null || selectedEntries === void 0 ? void 0 : selectedEntries.entries.map((upx, idx) => {
211
+ var _a, _b;
212
+ return ({
213
+ name: `[${idx + 1}] ${getTitle((_a = upx === null || upx === void 0 ? void 0 : upx.media) === null || _a === void 0 ? void 0 : _a.title)}`,
214
+ value: (_b = upx === null || upx === void 0 ? void 0 : upx.media) === null || _b === void 0 ? void 0 : _b.id,
215
+ });
216
+ }),
217
+ pageSize: 10,
218
+ },
219
+ ]);
220
+ // Where to save
221
+ const { selectedListType } = yield inquirer.prompt([
222
+ {
223
+ type: "list",
224
+ name: "selectedListType",
225
+ message: "Select the list where you want to save this anime:",
226
+ choices: [
227
+ { name: "Planning", value: "PLANNING" },
228
+ { name: "Watching", value: "CURRENT" },
229
+ { name: "Completed", value: "COMPLETED" },
230
+ { name: "Paused", value: "PAUSED" },
231
+ { name: "Dropped", value: "DROPPED" },
232
+ ],
233
+ },
234
+ ]);
235
+ // Lets save to the list now
236
+ const ISLOGGEDIN = yield isLoggedIn();
237
+ if (ISLOGGEDIN) {
238
+ const query = addAnimeToListMutation;
239
+ const variables = {
240
+ mediaId: selectedAnime,
241
+ status: selectedListType,
242
+ };
243
+ const response = yield fetcher(query, variables);
244
+ if (response) {
245
+ const saved = (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.SaveMediaListEntry;
246
+ console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
247
+ }
248
+ }
249
+ else {
250
+ console.error(`Please log in first to use this feature.`);
251
+ }
252
+ }
253
+ else {
254
+ console.log(`Not available at this moment.`);
255
+ }
256
+ }
257
+ else {
258
+ console.log("No entries found.");
259
+ }
117
260
  }
118
261
  else {
119
- console.log("No entries found.");
262
+ console.log(`\nYou seems to have no anime(s) in your lists.`);
120
263
  }
121
264
  }
122
265
  else {
123
- console.log(`Something went wrong. ${(_c = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _c === void 0 ? void 0 : _c.message}`);
266
+ console.log(`Something went wrong. ${(_e = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _e === void 0 ? void 0 : _e.message}`);
124
267
  }
125
268
  }
126
269
  else {
@@ -138,7 +281,7 @@ function loggedInUsersAnimeLists() {
138
281
  }
139
282
  function loggedInUsersMangaLists() {
140
283
  return __awaiter(this, void 0, void 0, function* () {
141
- var _a, _b, _c;
284
+ var _a, _b, _c, _d, _e, _f;
142
285
  try {
143
286
  const loggedIn = yield isLoggedIn();
144
287
  if (loggedIn) {
@@ -147,7 +290,7 @@ function loggedInUsersMangaLists() {
147
290
  const request = yield fetch(aniListEndpoint, {
148
291
  method: "POST",
149
292
  headers: {
150
- "content-type": "application/json",
293
+ "Content-Type": "application/json",
151
294
  Authorization: `Bearer ${yield retriveAccessToken()}`,
152
295
  },
153
296
  body: JSON.stringify({
@@ -156,42 +299,101 @@ function loggedInUsersMangaLists() {
156
299
  }),
157
300
  });
158
301
  const response = yield request.json();
159
- if (request.status === 200) {
160
- const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
161
- const { selectedList } = yield inquirer.prompt([
162
- {
163
- type: "list",
164
- name: "selectedList",
165
- message: "Select a manga list:",
166
- choices: lists.map((list) => list.name),
167
- },
168
- ]);
169
- const selectedEntries = lists.find((list) => list.name === selectedList);
170
- if (selectedEntries) {
171
- console.log(`\nEntries for '${selectedEntries.name}':`);
172
- selectedEntries.entries.forEach((entry, idx) => {
173
- var _a;
174
- console.log(`${idx + 1}. ${getTitle((_a = entry === null || entry === void 0 ? void 0 : entry.media) === null || _a === void 0 ? void 0 : _a.title)}`);
175
- });
302
+ if (request.status === 200 && ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection)) {
303
+ const lists = response.data.MediaListCollection.lists;
304
+ if (lists && lists.length > 0) {
305
+ const { selectedList } = yield inquirer.prompt([
306
+ {
307
+ type: "list",
308
+ name: "selectedList",
309
+ message: "Select a manga list:",
310
+ choices: lists.map((list) => list.name),
311
+ },
312
+ ]);
313
+ const selectedEntries = lists.find((list) => list.name === selectedList);
314
+ if (selectedEntries && selectedEntries.entries.length > 0) {
315
+ console.log(`\nEntries for '${selectedEntries.name}':`);
316
+ const { selectedManga } = yield inquirer.prompt([
317
+ {
318
+ type: "list",
319
+ name: "selectedManga",
320
+ message: "Select a manga to add to the list:",
321
+ choices: selectedEntries.entries.map((entry, idx) => {
322
+ var _a;
323
+ return ({
324
+ name: `[${idx + 1}] ${getTitle(entry.media.title)}`,
325
+ value: (_a = entry === null || entry === void 0 ? void 0 : entry.media) === null || _a === void 0 ? void 0 : _a.id,
326
+ });
327
+ }),
328
+ pageSize: 10,
329
+ },
330
+ ]);
331
+ // Prompt user to select list type to save to
332
+ const { selectedListType } = yield inquirer.prompt([
333
+ {
334
+ type: "list",
335
+ name: "selectedListType",
336
+ message: "Select the list where you want to save this manga:",
337
+ choices: [
338
+ { name: "Planning", value: "PLANNING" },
339
+ { name: "Reading", value: "CURRENT" },
340
+ { name: "Completed", value: "COMPLETED" },
341
+ { name: "Paused", value: "PAUSED" },
342
+ { name: "Dropped", value: "DROPPED" },
343
+ ],
344
+ },
345
+ ]);
346
+ // Save the selected manga to the selected list type
347
+ const ISLOGGEDIN = yield isLoggedIn();
348
+ if (ISLOGGEDIN) {
349
+ const query = addMangaToListMutation;
350
+ const variables = {
351
+ mediaId: selectedManga,
352
+ status: selectedListType,
353
+ };
354
+ const saveRequest = yield fetch(aniListEndpoint, {
355
+ method: "POST",
356
+ headers: {
357
+ "Content-Type": "application/json",
358
+ Authorization: `Bearer ${yield retriveAccessToken()}`,
359
+ },
360
+ body: JSON.stringify({ query, variables }),
361
+ });
362
+ const saveResponse = yield saveRequest.json();
363
+ if ((_b = saveResponse === null || saveResponse === void 0 ? void 0 : saveResponse.data) === null || _b === void 0 ? void 0 : _b.SaveMediaListEntry) {
364
+ const saved = saveResponse.data.SaveMediaListEntry;
365
+ console.log(`\nEntry ${saved.id}. Saved as ${saved.status}.`);
366
+ }
367
+ else {
368
+ console.error(`Failed to save the manga. ${((_d = (_c = saveResponse === null || saveResponse === void 0 ? void 0 : saveResponse.errors) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) || "Unknown error"}`);
369
+ }
370
+ }
371
+ else {
372
+ console.error(`Please log in first to use this feature.`);
373
+ }
374
+ }
375
+ else {
376
+ console.log("No manga entries found in the selected list.");
377
+ }
176
378
  }
177
379
  else {
178
- console.log("No entries found.");
380
+ console.log("\nYou don't seem to have any manga in your lists.");
179
381
  }
180
382
  }
181
383
  else {
182
- console.log(`Something went wrong. ${(_c = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _c === void 0 ? void 0 : _c.message}`);
384
+ console.error(`Failed to fetch manga lists. ${((_f = (_e = response === null || response === void 0 ? void 0 : response.errors) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.message) || "Unknown error"}`);
183
385
  }
184
386
  }
185
387
  else {
186
- console.log(`Failed getting current user Id.`);
388
+ console.error(`Failed to get the current user ID.`);
187
389
  }
188
390
  }
189
391
  else {
190
- console.log(`Please log in first.`);
392
+ console.error("Please log in first.");
191
393
  }
192
394
  }
193
395
  catch (error) {
194
- console.log(`Something went wrong. ${error.message}`);
396
+ console.error(`Something went wrong. ${error.message}`);
195
397
  }
196
398
  });
197
399
  }
@@ -216,30 +418,36 @@ function deleteAnimeCollection() {
216
418
  const response = yield request.json();
217
419
  if (request.status === 200) {
218
420
  const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
219
- const { selectedList } = yield inquirer.prompt([
220
- {
221
- type: "list",
222
- name: "selectedList",
223
- message: "Select an anime list:",
224
- choices: lists.map((list) => list.name),
225
- },
226
- ]);
227
- const selectedEntries = lists.find((list) => list.name === selectedList);
228
- if (selectedEntries) {
229
- console.log(`\nDeleting entries of '${selectedEntries.name}':`);
230
- for (const [idx, entry] of selectedEntries.entries.entries()) {
231
- if (entry === null || entry === void 0 ? void 0 : entry.id) {
232
- yield deleteAnimeByAnimeId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
233
- yield new Promise((resolve) => setTimeout(resolve, 2000));
234
- }
235
- else {
236
- console.log(`No id in entry.`);
237
- console.log(entry);
421
+ if (lists.length > 0) {
422
+ const { selectedList } = yield inquirer.prompt([
423
+ {
424
+ type: "list",
425
+ name: "selectedList",
426
+ message: "Select an anime list:",
427
+ choices: lists.map((list) => list.name),
428
+ pageSize: 10,
429
+ },
430
+ ]);
431
+ const selectedEntries = lists.find((list) => list.name === selectedList);
432
+ if (selectedEntries) {
433
+ console.log(`\nDeleting entries of '${selectedEntries.name}':`);
434
+ for (const [idx, entry] of selectedEntries.entries.entries()) {
435
+ if (entry === null || entry === void 0 ? void 0 : entry.id) {
436
+ yield deleteAnimeByAnimeId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
437
+ yield new Promise((resolve) => setTimeout(resolve, 2000));
438
+ }
439
+ else {
440
+ console.log(`No id in entry.`);
441
+ console.log(entry);
442
+ }
238
443
  }
239
444
  }
445
+ else {
446
+ console.log("No entries found.");
447
+ }
240
448
  }
241
449
  else {
242
- console.log("No entries found.");
450
+ console.log(`\nNo anime(s) found in any list.`);
243
451
  }
244
452
  }
245
453
  else {
@@ -306,30 +514,36 @@ function deleteMangaCollection() {
306
514
  const response = yield request.json();
307
515
  if (request.status === 200) {
308
516
  const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
309
- const { selectedList } = yield inquirer.prompt([
310
- {
311
- type: "list",
312
- name: "selectedList",
313
- message: "Select a manga list:",
314
- choices: lists.map((list) => list.name),
315
- },
316
- ]);
317
- const selectedEntries = lists.find((list) => list.name === selectedList);
318
- if (selectedEntries) {
319
- console.log(`\nDeleting entries of '${selectedEntries.name}':`);
320
- for (const [idx, entry] of selectedEntries.entries.entries()) {
321
- if (entry === null || entry === void 0 ? void 0 : entry.id) {
322
- yield deleteMangaByMangaId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
323
- yield new Promise((resolve) => setTimeout(resolve, 2000));
324
- }
325
- else {
326
- console.log(`No id in entry.`);
327
- console.log(entry);
517
+ if (lists.length > 0) {
518
+ const { selectedList } = yield inquirer.prompt([
519
+ {
520
+ type: "list",
521
+ name: "selectedList",
522
+ message: "Select a manga list:",
523
+ choices: lists.map((list) => list.name),
524
+ pageSize: 10,
525
+ },
526
+ ]);
527
+ const selectedEntries = lists.find((list) => list.name === selectedList);
528
+ if (selectedEntries) {
529
+ console.log(`\nDeleting entries of '${selectedEntries.name}':`);
530
+ for (const [idx, entry] of selectedEntries.entries.entries()) {
531
+ if (entry === null || entry === void 0 ? void 0 : entry.id) {
532
+ yield deleteMangaByMangaId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
533
+ yield new Promise((resolve) => setTimeout(resolve, 2000));
534
+ }
535
+ else {
536
+ console.log(`No id in entry.`);
537
+ console.log(entry);
538
+ }
328
539
  }
329
540
  }
541
+ else {
542
+ console.log("No entries found.");
543
+ }
330
544
  }
331
545
  else {
332
- console.log("No entries found.");
546
+ console.log(`\nNo manga(s) found in any list.`);
333
547
  }
334
548
  }
335
549
  else {
@@ -377,7 +591,7 @@ function deleteMangaByMangaId(id, title) {
377
591
  }
378
592
  function getUpcomingAnimes(count) {
379
593
  return __awaiter(this, void 0, void 0, function* () {
380
- var _a, _b, _c, _d;
594
+ var _a, _b, _c, _d, _e;
381
595
  try {
382
596
  const { nextSeason, nextYear } = getNextSeasonAndYear();
383
597
  const loggedIn = yield isLoggedIn();
@@ -398,15 +612,50 @@ function getUpcomingAnimes(count) {
398
612
  const response = yield request.json();
399
613
  if (request.status === 200) {
400
614
  const upcoming = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.media) !== null && _c !== void 0 ? _c : [];
401
- console.log("");
402
- upcoming.forEach(({ id, title, startDate, genres }, idx) => {
403
- const titleName = (title === null || title === void 0 ? void 0 : title.userPreffered) || getTitle(title);
404
- const formattedDate = `${(startDate === null || startDate === void 0 ? void 0 : startDate.day) ? `${startDate === null || startDate === void 0 ? void 0 : startDate.day}/` : ""}${startDate === null || startDate === void 0 ? void 0 : startDate.month}/${startDate === null || startDate === void 0 ? void 0 : startDate.year}`;
405
- console.log(`[${idx + 1}] ${titleName}\n\t${formattedDate} ${genres.join(", ")}`);
406
- });
615
+ const { selectedAnime } = yield inquirer.prompt([
616
+ {
617
+ type: "list",
618
+ name: "selectedAnime",
619
+ message: "Select anime to add to the list:",
620
+ choices: upcoming.map((upx, idx) => ({
621
+ name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
622
+ value: upx === null || upx === void 0 ? void 0 : upx.id,
623
+ })),
624
+ pageSize: 10,
625
+ },
626
+ ]);
627
+ // Where to save
628
+ const { selectedListType } = yield inquirer.prompt([
629
+ {
630
+ type: "list",
631
+ name: "selectedListType",
632
+ message: "Select the list where you want to save this anime:",
633
+ choices: [
634
+ { name: "Planning", value: "PLANNING" },
635
+ { name: "Watching", value: "CURRENT" },
636
+ { name: "Completed", value: "COMPLETED" },
637
+ { name: "Paused", value: "PAUSED" },
638
+ { name: "Dropped", value: "DROPPED" },
639
+ ],
640
+ },
641
+ ]);
642
+ // Lets save to the list now
643
+ const ISLOGGEDIN = yield isLoggedIn();
644
+ if (ISLOGGEDIN) {
645
+ const query = addAnimeToListMutation;
646
+ const variables = { mediaId: selectedAnime, status: selectedListType };
647
+ const response = yield fetcher(query, variables);
648
+ if (response) {
649
+ const saved = (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.SaveMediaListEntry;
650
+ console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
651
+ }
652
+ }
653
+ else {
654
+ console.error(`Please log in first to use this feature.`);
655
+ }
407
656
  }
408
657
  else {
409
- console.error(`Something went wrong. ${(_d = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _d === void 0 ? void 0 : _d.message}`);
658
+ console.error(`Something went wrong. ${(_e = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _e === void 0 ? void 0 : _e.message}`);
410
659
  }
411
660
  }
412
661
  catch (error) {
@@ -1,3 +1,6 @@
1
1
  declare function getUserInfoByUsername(username: string): Promise<void>;
2
2
  declare function getAnimeDetailsByID(anilistID: number): Promise<void>;
3
- export { getUserInfoByUsername, getAnimeDetailsByID };
3
+ declare function getAnimeSearchResults(search: string, count: number): Promise<void>;
4
+ declare function getMangaSearchResults(search: string, count: number): Promise<void>;
5
+ declare function deleteUserActivities(): Promise<void>;
6
+ export { getUserInfoByUsername, getAnimeDetailsByID, getAnimeSearchResults, getMangaSearchResults, deleteUserActivities, };