65 lines
2 KiB
JavaScript
65 lines
2 KiB
JavaScript
|
import { listen } from 'loot-core/src/platform/client/fetch';
|
||
|
import * as sharedListeners from 'loot-core/src/client/shared-listeners';
|
||
|
import { invalidatePurchaserInfoCache } from './src/util/iap';
|
||
|
|
||
|
export function handleGlobalEvents(actions, store) {
|
||
|
// listen('server-error', info => {
|
||
|
// actions.addGenericErrorNotification();
|
||
|
// });
|
||
|
|
||
|
listen('update-loading-status', status => {
|
||
|
switch (status) {
|
||
|
case 'updating':
|
||
|
actions.updateStatusText('Updating...');
|
||
|
break;
|
||
|
default:
|
||
|
}
|
||
|
});
|
||
|
|
||
|
listen('sync-event', async ({ type }) => {
|
||
|
if (type === 'unauthorized') {
|
||
|
// This means their account expired, so invalidate the purchaser
|
||
|
// cache to make sure it gets the changes
|
||
|
await invalidatePurchaserInfoCache();
|
||
|
|
||
|
let userData = await actions.getUserData();
|
||
|
|
||
|
let msg;
|
||
|
if (userData) {
|
||
|
if (userData.status === 'trial_ended') {
|
||
|
msg =
|
||
|
'Your trial has ended. Any changes will not be saved until you subscribe.';
|
||
|
} else if (userData.status === 'cancelled') {
|
||
|
msg =
|
||
|
'Your subscription has been cancelled. Any changes will not be saved until you subscribe again.';
|
||
|
} else {
|
||
|
msg =
|
||
|
'We had problems billing your account. Any changes will not be saved ' +
|
||
|
'until this is fixed.';
|
||
|
}
|
||
|
} else {
|
||
|
msg =
|
||
|
'You are not logged in. Any changes will not be saved. Close the budget in settings and log in.';
|
||
|
}
|
||
|
|
||
|
actions.addNotification({
|
||
|
type: 'warning',
|
||
|
message: msg,
|
||
|
sticky: true,
|
||
|
id: 'trial-ended',
|
||
|
button: userData && {
|
||
|
title: 'Go to Settings',
|
||
|
// There is no spoon. Settings modal doesn't exist, this is
|
||
|
// a hack because right now the only way we can navigate
|
||
|
// outside of react is to use the modal listener (see ModalListener.js)
|
||
|
action: async () => {
|
||
|
actions.pushModal('settings');
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
sharedListeners.listenForSyncEvent(actions, store);
|
||
|
}
|