Download src/js/sync/sync-resolver.js from bayan10/bayan-api: direct link, hf CLI and curl.
- Browser
- Download file 1.2 kB
-
https://huggingface.co/spaces/bayan10/bayan-api/resolve/7f0ddc6fae7dfd082ec8e12f0c570d039e09dcb2/src/js/sync/sync-resolver.js
- Command line
-
hf download hf://spaces/bayan10/bayan-api@7f0ddc6fae7dfd082ec8e12f0c570d039e09dcb2/src/js/sync/sync-resolver.js
-
curl -L -o sync-resolver.js https://huggingface.co/spaces/bayan10/bayan-api/resolve/7f0ddc6fae7dfd082ec8e12f0c570d039e09dcb2/src/js/sync/sync-resolver.js
1.2 kB
| // Phase 7: Sync Resolver | |
| // Resolves conflicts between local and server versions of documents | |
| const SyncResolver = { | |
| /** | |
| * Resolves a conflict between a local document draft and the server document. | |
| * Rule: Latest timestamp wins. Fallback: Server wins. | |
| * | |
| * @param {object} localDoc - The local pending change or draft object (needs timestamp) | |
| * @param {object} serverDoc - The document fetched from Supabase (needs updated_at) | |
| * @returns {'local' | 'server'} - Which version won | |
| */ | |
| resolveConflict(localDoc, serverDoc) { | |
| if (!localDoc || !localDoc.content) return 'server'; | |
| if (!serverDoc || !serverDoc.content) return 'local'; | |
| const localTime = localDoc.timestamp ? new Date(localDoc.timestamp).getTime() : 0; | |
| const serverTime = serverDoc.updated_at ? new Date(serverDoc.updated_at).getTime() : 0; | |
| // If both times are valid, latest wins | |
| if (localTime > 0 && serverTime > 0) { | |
| if (localTime >= serverTime) { | |
| return 'local'; | |
| } else { | |
| return 'server'; | |
| } | |
| } | |
| // Fallback: Server wins | |
| return 'server'; | |
| } | |
| }; | |
| if (typeof module !== 'undefined' && module.exports) { | |
| module.exports = { SyncResolver }; | |
| } | |