feat: disabled new disappearing message modes behind a timed feature release function
parent
190c68d759
commit
848c97938c
@ -0,0 +1,54 @@
|
||||
import { Data } from '../data/data';
|
||||
|
||||
// TODO update to agreed value between platforms
|
||||
const featureReleaseTimestamp = 1676851200000; // unix 13/02/2023
|
||||
// const featureReleaseTimestamp = 1676608378; // test value
|
||||
let isFeatureReleased: boolean | undefined;
|
||||
|
||||
/**
|
||||
* this is only intended for testing. Do not call this in production.
|
||||
*/
|
||||
export function resetFeatureReleasedCachedValue() {
|
||||
isFeatureReleased = undefined;
|
||||
}
|
||||
|
||||
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;
|
||||
// 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 });
|
||||
isFeatureReleased = false;
|
||||
} else {
|
||||
isFeatureReleased = oldIsFeatureReleased;
|
||||
}
|
||||
}
|
||||
return Boolean(isFeatureReleased);
|
||||
}
|
||||
|
||||
export async function checkIsFeatureReleased(featureName: string): Promise<boolean> {
|
||||
if (isFeatureReleased === undefined) {
|
||||
const featureAlreadyReleased = await getIsFeatureReleased();
|
||||
|
||||
// Is it time to release the feature?
|
||||
if (Date.now() >= featureReleaseTimestamp) {
|
||||
if (featureAlreadyReleased) {
|
||||
// Feature is already released and we don't need to update the db
|
||||
window.log.info(`WIP: [releaseFeature]: ${featureName} is released`);
|
||||
} else {
|
||||
window.log.info(
|
||||
`WIP: [releaseFeature]: It is time to release ${featureName}. Releasing it now`
|
||||
);
|
||||
await Data.createOrUpdateItem({
|
||||
id: 'featureReleased',
|
||||
value: true,
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
window.log.info(`WIP: [releaseFeature]: ${featureName} has not been released yet`);
|
||||
return false;
|
||||
}
|
Loading…
Reference in New Issue