60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
const sqliteRepository = require('./sqlite.repository');
|
|
const firebaseRepository = require('./firebase.repository');
|
|
|
|
let authService = null;
|
|
|
|
function setAuthService(service) {
|
|
authService = service;
|
|
}
|
|
|
|
function getBaseRepository() {
|
|
if (!authService) {
|
|
// Fallback or error if authService is not set, to prevent crashes.
|
|
// During initial load, it might not be set, so we default to sqlite.
|
|
return sqliteRepository;
|
|
}
|
|
const user = authService.getCurrentUser();
|
|
if (user && user.isLoggedIn) {
|
|
return firebaseRepository;
|
|
}
|
|
return sqliteRepository;
|
|
}
|
|
|
|
// The adapter layer that injects the UID
|
|
const sessionRepositoryAdapter = {
|
|
setAuthService, // Expose the setter
|
|
|
|
getById: (id) => getBaseRepository().getById(id),
|
|
|
|
create: (type = 'ask') => {
|
|
const uid = authService.getCurrentUserId();
|
|
return getBaseRepository().create(uid, type);
|
|
},
|
|
|
|
getAllByUserId: () => {
|
|
const uid = authService.getCurrentUserId();
|
|
return getBaseRepository().getAllByUserId(uid);
|
|
},
|
|
|
|
updateTitle: (id, title) => getBaseRepository().updateTitle(id, title),
|
|
|
|
deleteWithRelatedData: (id) => getBaseRepository().deleteWithRelatedData(id),
|
|
|
|
end: (id) => getBaseRepository().end(id),
|
|
|
|
updateType: (id, type) => getBaseRepository().updateType(id, type),
|
|
|
|
touch: (id) => getBaseRepository().touch(id),
|
|
|
|
getOrCreateActive: (requestedType = 'ask') => {
|
|
const uid = authService.getCurrentUserId();
|
|
return getBaseRepository().getOrCreateActive(uid, requestedType);
|
|
},
|
|
|
|
endAllActiveSessions: () => {
|
|
const uid = authService.getCurrentUserId();
|
|
return getBaseRepository().endAllActiveSessions(uid);
|
|
},
|
|
};
|
|
|
|
module.exports = sessionRepositoryAdapter;
|