Public Access
refactor(import): move the import parts to components/import
This commit is contained in:
1 parent
28ff6eae52
commit
aa5832225d
8 files changed
+520
-481
No files matched your search
+38
-1
@@ -1,7 +1,8 @@
|
||||
import {apiFetch} from './api.js';
|
||||
import {parseStatus} from './backlog.js';
|
||||
import {MAX_IMPORT_TITLE_LENGTH, MAX_PLATFORM_LENGTH, MAX_PLAYTIME_MINUTES} from './limits.js';
|
||||
import {hoursToMinutes} from './manualGames.js';
|
||||
import {hoursToMinutes, toHours} from './manualGames.js';
|
||||
import {preselectPlatform} from './platforms.js';
|
||||
|
||||
const IMPORTS_URL = () => `${import.meta.env.VITE_CORE_API_URL}/api/library/imports`;
|
||||
const JSON_HEADERS = {'Content-Type': 'application/json'};
|
||||
@@ -108,3 +109,39 @@ function csvRecords(text, delimiter) {
|
||||
}
|
||||
return records;
|
||||
}
|
||||
|
||||
// Statuses a worker still has: the page polls while it shows one.
|
||||
export const RUNNING = ['QUEUED', 'MATCHING', 'SAVING'];
|
||||
// The steps an import goes through, as shown to the user.
|
||||
export const STEPS = ['QUEUED', 'MATCHING', 'REVIEW', 'SAVING', 'DETAILS', 'DONE'];
|
||||
|
||||
/**
|
||||
* The step an import is in; a FAILED one is in the step it stopped in.
|
||||
*/
|
||||
export const stepOf = (data) => {
|
||||
switch (data.status) {
|
||||
case 'QUEUED': return 'QUEUED';
|
||||
case 'MATCHING': return 'MATCHING';
|
||||
case 'READY': return 'REVIEW';
|
||||
case 'SAVING': return data.step === 'DETAILS' ? 'DETAILS' : 'SAVING';
|
||||
case 'FAILED': return data.chosen > 0 ? 'SAVING' : 'MATCHING';
|
||||
default: return 'DONE';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* The first choice of a line: its best candidate with the preselected platform; checked only for a sure match (the
|
||||
* same name, not in the library yet, a platform found).
|
||||
*/
|
||||
export const initialChoice = (row, favorite) => {
|
||||
const candidate = row.candidates[0];
|
||||
const platform = candidate ? preselectPlatform(row.platform, candidate.platforms, favorite) : '';
|
||||
return {
|
||||
candidates: row.candidates,
|
||||
igdbId: candidate?.igdbId ?? null,
|
||||
platform,
|
||||
status: row.status ?? 'BACKLOG',
|
||||
hours: toHours(row.playtimeMinutes),
|
||||
checked: row.exact && !!candidate && !candidate.inLibrary && platform !== '',
|
||||
};
|
||||
};
|
||||
Reference in new issue
Block a user