mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 07:43:35 +00:00
* Rename service-factory folder * Move cryptographic service factories * Move crypto models * Move crypto services * Move domain base class * Platform code owners * Move desktop log services * Move log files * Establish component library ownership * Move background listeners * Move background background * Move localization to Platform * Move browser alarms to Platform * Move browser state to Platform * Move CLI state to Platform * Move Desktop native concerns to Platform * Move flag and misc to Platform * Lint fixes * Move electron state to platform * Move web state to Platform * Move lib state to Platform * Fix broken tests * Rename interface to idiomatic TS * `npm run prettier` 🤖 * Resolve review feedback * Set platform as owners of web core and shared * Expand moved services * Fix test types --------- Co-authored-by: Hinton <hinton@users.noreply.github.com>
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { Jsonify } from "type-fest";
|
|
|
|
import {
|
|
ServerConfigData,
|
|
ThirdPartyServerConfigData,
|
|
EnvironmentServerConfigData,
|
|
} from "../../models/data/server-config.data";
|
|
|
|
const dayInMilliseconds = 24 * 3600 * 1000;
|
|
const eighteenHoursInMilliseconds = 18 * 3600 * 1000;
|
|
|
|
export class ServerConfig {
|
|
version: string;
|
|
gitHash: string;
|
|
server?: ThirdPartyServerConfigData;
|
|
environment?: EnvironmentServerConfigData;
|
|
utcDate: Date;
|
|
featureStates: { [key: string]: string } = {};
|
|
|
|
constructor(serverConfigData: ServerConfigData) {
|
|
this.version = serverConfigData.version;
|
|
this.gitHash = serverConfigData.gitHash;
|
|
this.server = serverConfigData.server;
|
|
this.utcDate = new Date(serverConfigData.utcDate);
|
|
this.environment = serverConfigData.environment;
|
|
this.featureStates = serverConfigData.featureStates;
|
|
|
|
if (this.server?.name == null && this.server?.url == null) {
|
|
this.server = null;
|
|
}
|
|
}
|
|
|
|
private getAgeInMilliseconds(): number {
|
|
return new Date().getTime() - this.utcDate?.getTime();
|
|
}
|
|
|
|
isValid(): boolean {
|
|
return this.getAgeInMilliseconds() <= dayInMilliseconds;
|
|
}
|
|
|
|
expiresSoon(): boolean {
|
|
return this.getAgeInMilliseconds() >= eighteenHoursInMilliseconds;
|
|
}
|
|
|
|
static fromJSON(obj: Jsonify<ServerConfig>): ServerConfig {
|
|
if (obj == null) {
|
|
return null;
|
|
}
|
|
|
|
return new ServerConfig(obj);
|
|
}
|
|
}
|