2023-01-11 08:28:42 +03:00
|
|
|
import store from './store';
|
|
|
|
|
2023-02-05 19:17:19 +03:00
|
|
|
export function getAccount(id) {
|
2023-01-11 08:28:42 +03:00
|
|
|
const accounts = store.local.getJSON('accounts') || [];
|
2023-02-09 20:01:06 +03:00
|
|
|
return accounts.find((a) => a.info.id === id) || accounts[0];
|
2023-02-05 19:17:19 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
export function getCurrentAccount() {
|
2023-01-11 08:28:42 +03:00
|
|
|
const currentAccount = store.session.get('currentAccount');
|
2023-02-05 19:17:19 +03:00
|
|
|
const account = getAccount(currentAccount);
|
2023-01-11 08:28:42 +03:00
|
|
|
return account;
|
|
|
|
}
|
2023-01-13 10:30:09 +03:00
|
|
|
|
|
|
|
export function getCurrentAccountNS() {
|
|
|
|
const account = getCurrentAccount();
|
|
|
|
const {
|
|
|
|
instanceURL,
|
|
|
|
info: { id },
|
|
|
|
} = account;
|
|
|
|
return `${id}@${instanceURL}`;
|
|
|
|
}
|
2023-02-05 19:17:19 +03:00
|
|
|
|
|
|
|
export function saveAccount(account) {
|
|
|
|
const accounts = store.local.getJSON('accounts') || [];
|
|
|
|
const acc = accounts.find((a) => a.info.id === account.info.id);
|
|
|
|
if (acc) {
|
|
|
|
acc.info = account.info;
|
|
|
|
acc.instanceURL = account.instanceURL;
|
|
|
|
acc.accessToken = account.accessToken;
|
|
|
|
} else {
|
|
|
|
accounts.push(account);
|
|
|
|
}
|
|
|
|
store.local.setJSON('accounts', accounts);
|
|
|
|
store.session.set('currentAccount', account.info.id);
|
|
|
|
}
|
2023-02-12 20:21:18 +03:00
|
|
|
|
|
|
|
let currentInstance = null;
|
|
|
|
export function getCurrentInstance() {
|
|
|
|
if (currentInstance) return currentInstance;
|
|
|
|
try {
|
|
|
|
const account = getCurrentAccount();
|
|
|
|
const instances = store.local.getJSON('instances');
|
|
|
|
const instance = account.instanceURL.toLowerCase();
|
|
|
|
return (currentInstance = instances[instance]);
|
|
|
|
} catch (e) {
|
|
|
|
console.error(e);
|
|
|
|
alert('Failed to load instance configuration. Please try again.');
|
|
|
|
// Temporary fix for corrupted data
|
|
|
|
store.local.del('instances');
|
|
|
|
location.reload();
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
}
|