68 lines
2.4 KiB
JavaScript
68 lines
2.4 KiB
JavaScript
export default {
|
|
namespaced: true,
|
|
state: {
|
|
currentWorkspaceId: null,
|
|
lastFocus: 0,
|
|
},
|
|
mutations: {
|
|
setCurrentWorkspaceId: (state, value) => {
|
|
state.currentWorkspaceId = value;
|
|
},
|
|
setLastFocus: (state, value) => {
|
|
state.lastFocus = value;
|
|
},
|
|
},
|
|
getters: {
|
|
mainWorkspace: (state, getters, rootState, rootGetters) => {
|
|
const workspaces = rootGetters['data/sanitizedWorkspaces'];
|
|
return workspaces.main;
|
|
},
|
|
currentWorkspace: (state, getters, rootState, rootGetters) => {
|
|
const workspaces = rootGetters['data/sanitizedWorkspaces'];
|
|
return workspaces[state.currentWorkspaceId] || getters.mainWorkspace;
|
|
},
|
|
lastSyncActivityKey: (state, getters) => `${getters.currentWorkspace.id}/lastSyncActivity`,
|
|
lastFocusKey: (state, getters) => `${getters.currentWorkspace.id}/lastWindowFocus`,
|
|
mainWorkspaceToken: (state, getters, rootState, rootGetters) => {
|
|
const googleTokens = rootGetters['data/googleTokens'];
|
|
const loginSubs = Object.keys(googleTokens)
|
|
.filter(sub => googleTokens[sub].isLogin);
|
|
return googleTokens[loginSubs[0]];
|
|
},
|
|
syncToken: (state, getters, rootState, rootGetters) => {
|
|
const workspace = getters.currentWorkspace;
|
|
switch (workspace.providerId) {
|
|
case 'googleDriveWorkspace': {
|
|
const googleTokens = rootGetters['data/googleTokens'];
|
|
return googleTokens[workspace.sub];
|
|
}
|
|
case 'couchdbWorkspace': {
|
|
const couchdbTokens = rootGetters['data/couchdbTokens'];
|
|
return couchdbTokens[workspace.id];
|
|
}
|
|
default:
|
|
return getters.mainWorkspaceToken;
|
|
}
|
|
},
|
|
loginToken: (state, getters, rootState, rootGetters) => {
|
|
const workspace = getters.currentWorkspace;
|
|
switch (workspace.providerId) {
|
|
case 'googleDriveWorkspace': {
|
|
const googleTokens = rootGetters['data/googleTokens'];
|
|
return googleTokens[workspace.sub];
|
|
}
|
|
default:
|
|
return getters.mainWorkspaceToken;
|
|
}
|
|
},
|
|
sponsorToken: (state, getters) => getters.mainWorkspaceToken,
|
|
},
|
|
actions: {
|
|
setCurrentWorkspaceId: ({ commit, getters }, value) => {
|
|
commit('setCurrentWorkspaceId', value);
|
|
const lastFocus = parseInt(localStorage.getItem(getters.lastFocusKey), 10) || 0;
|
|
commit('setLastFocus', lastFocus);
|
|
},
|
|
},
|
|
};
|