release/v1.3.3 #11
@@ -286,15 +286,31 @@ const syncAccounts = async (isManual = false) => {
|
|||||||
} else {
|
} else {
|
||||||
const sDate = s.sessionUpdatedAt ? new Date(s.sessionUpdatedAt) : new Date(0);
|
const sDate = s.sessionUpdatedAt ? new Date(s.sessionUpdatedAt) : new Date(0);
|
||||||
const lDate = exists.sessionUpdatedAt ? new Date(exists.sessionUpdatedAt) : new Date(0);
|
const lDate = exists.sessionUpdatedAt ? new Date(exists.sessionUpdatedAt) : new Date(0);
|
||||||
if (sDate > lDate) {
|
// 1. SENSITIVE DATA SYNC (Credentials)
|
||||||
|
const sSessionDate = s.sessionUpdatedAt ? new Date(s.sessionUpdatedAt) : new Date(0);
|
||||||
|
const lSessionDate = exists.sessionUpdatedAt ? new Date(exists.sessionUpdatedAt) : new Date(0);
|
||||||
|
|
||||||
|
const isLocalAccount = !exists._id.startsWith('shared_');
|
||||||
|
const isLocalSessionHealthy = exists.steamLoginSecure && !exists.authError;
|
||||||
|
|
||||||
|
// SMART OVERWRITE LOGIC:
|
||||||
|
// - If it's a remote shared account: Newest wins.
|
||||||
|
// - If it's a LOCAL account: Only overwrite if our local session is broken/missing.
|
||||||
|
const shouldOverwriteCredentials = !isLocalAccount ? (sSessionDate > lSessionDate) : (!isLocalSessionHealthy && sSessionDate > lSessionDate);
|
||||||
|
|
||||||
|
if (shouldOverwriteCredentials) {
|
||||||
if (s.loginName) exists.loginName = s.loginName;
|
if (s.loginName) exists.loginName = s.loginName;
|
||||||
if (s.loginConfig) exists.loginConfig = s.loginConfig;
|
if (s.loginConfig) exists.loginConfig = s.loginConfig;
|
||||||
if (s.steamLoginSecure) { exists.steamLoginSecure = s.steamLoginSecure; exists.autoCheckCooldown = true; exists.authError = false; }
|
if (s.steamLoginSecure) {
|
||||||
|
exists.steamLoginSecure = s.steamLoginSecure;
|
||||||
|
exists.autoCheckCooldown = true;
|
||||||
|
exists.authError = false;
|
||||||
|
}
|
||||||
exists.sessionUpdatedAt = s.sessionUpdatedAt;
|
exists.sessionUpdatedAt = s.sessionUpdatedAt;
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Metadata Sync (Pull)
|
// 2. Metadata Sync (Pull) - Always "Newest Wins"
|
||||||
const sMetaDate = s.lastMetadataCheck ? new Date(s.lastMetadataCheck) : new Date(0);
|
const sMetaDate = s.lastMetadataCheck ? new Date(s.lastMetadataCheck) : new Date(0);
|
||||||
const lMetaDate = exists.lastBanCheck ? new Date(exists.lastBanCheck) : new Date(0);
|
const lMetaDate = exists.lastBanCheck ? new Date(exists.lastBanCheck) : new Date(0);
|
||||||
if (sMetaDate > lMetaDate) {
|
if (sMetaDate > lMetaDate) {
|
||||||
|
|||||||
Reference in New Issue
Block a user