Redesign the desktop workspace with task sidebars, live filters, clearer settings, and an accessible update dialog. Harden encrypted backup imports, configuration persistence, history retention, queue snapshots, shutdown recovery, and update installation ordering. Publish verified Windows artifacts and refreshed English documentation.
37 lines
1.7 KiB
JavaScript
37 lines
1.7 KiB
JavaScript
// Decides which credential an upload task should use for a given hoster.
|
|
// Extracted from main.js buildTaskFromAccount so the routing can be unit-tested
|
|
// without Electron.
|
|
//
|
|
// DOODSTREAM SPECIAL CASE: prefer the official doodapi.co API key whenever the
|
|
// account has one. The web-login path (username/password) drives doodstream's
|
|
// browser upload flow, which hands the filecode back inside an XFileSharing
|
|
// HTML form. On long/large uploads that form comes back empty (no fn) because a
|
|
// per-page-load sess_id token ages out over the multi-minute upload and/or the
|
|
// server-side file-registration callback times out — the upload then "succeeds"
|
|
// (bytes sent, HTTP 200) but yields no link. The JSON API returns the filecode
|
|
// directly in result[0].filecode and authenticates with a persistent api_key,
|
|
// so it has no empty-form failure mode for result retrieval. The API path was
|
|
// doodstream's ORIGINAL upload path (present since the initial commit); web
|
|
// login was added later only as an alternative for keyless accounts — so
|
|
// preferring the key here restores the intended primary path, it doesn't fight
|
|
// a deliberate choice. Keyless accounts keep using web login unchanged.
|
|
function selectUploadAuth(hoster, account) {
|
|
if (!account || typeof account !== 'object') return {};
|
|
|
|
if (hoster === 'doodstream.com' && account.apiKey) {
|
|
return { apiKey: account.apiKey };
|
|
}
|
|
if (account.authType === 'api' && account.apiKey) {
|
|
return { apiKey: account.apiKey };
|
|
}
|
|
if (account.username && account.password) {
|
|
return { username: account.username, password: account.password };
|
|
}
|
|
if (account.apiKey) {
|
|
return { apiKey: account.apiKey };
|
|
}
|
|
return {};
|
|
}
|
|
|
|
module.exports = { selectUploadAuth };
|