|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
import { Data } from '../data/data';
|
|
|
|
|
import { Storage } from './storage';
|
|
|
|
|
|
|
|
|
|
// TODO update to agreed value between platforms
|
|
|
|
|
const featureReleaseTimestamp = 1706778000000; // unix 01/02/2024 09:00
|
|
|
|
@ -15,10 +15,10 @@ export function resetFeatureReleasedCachedValue() {
|
|
|
|
|
export async function getIsFeatureReleased(): Promise<boolean> {
|
|
|
|
|
if (isFeatureReleased === undefined) {
|
|
|
|
|
// read values from db and cache them as it looks like we did not
|
|
|
|
|
const oldIsFeatureReleased = (await Data.getItemById('featureReleased'))?.value;
|
|
|
|
|
const oldIsFeatureReleased = Boolean(Storage.get('featureReleased'));
|
|
|
|
|
// values do not exist in the db yet. Let's store false for now in the db and update our cached value.
|
|
|
|
|
if (oldIsFeatureReleased === undefined) {
|
|
|
|
|
await Data.createOrUpdateItem({ id: 'featureReleased', value: false });
|
|
|
|
|
await Storage.put('featureReleased', false);
|
|
|
|
|
isFeatureReleased = false;
|
|
|
|
|
} else {
|
|
|
|
|
isFeatureReleased = oldIsFeatureReleased;
|
|
|
|
@ -37,20 +37,14 @@ export async function checkIsFeatureReleased(featureName: string): Promise<boole
|
|
|
|
|
// Feature is already released and we don't need to update the db
|
|
|
|
|
} else {
|
|
|
|
|
window.log.info(`[releaseFeature]: It is time to release ${featureName}. Releasing it now`);
|
|
|
|
|
await Data.createOrUpdateItem({
|
|
|
|
|
id: 'featureReleased',
|
|
|
|
|
value: true,
|
|
|
|
|
});
|
|
|
|
|
await Storage.put('featureReleased', true);
|
|
|
|
|
}
|
|
|
|
|
isFeatureReleased = true;
|
|
|
|
|
} else {
|
|
|
|
|
// Reset featureReleased to false if we have already released a feature since we have updated the featureReleaseTimestamp to a later date.
|
|
|
|
|
// The alternative solution would be to do a db migration everytime we want to use this system.
|
|
|
|
|
if (featureAlreadyReleased) {
|
|
|
|
|
await Data.createOrUpdateItem({
|
|
|
|
|
id: 'featureReleased',
|
|
|
|
|
value: false,
|
|
|
|
|
});
|
|
|
|
|
await Storage.put('featureReleased', false);
|
|
|
|
|
isFeatureReleased = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|