aboutsummaryrefslogtreecommitdiff
path: root/ui/src/frontend/record_config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/frontend/record_config.ts')
-rw-r--r--ui/src/frontend/record_config.ts137
1 files changed, 0 insertions, 137 deletions
diff --git a/ui/src/frontend/record_config.ts b/ui/src/frontend/record_config.ts
deleted file mode 100644
index 029f6f02a..000000000
--- a/ui/src/frontend/record_config.ts
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-import {RecordConfig} from '../common/state';
-import {validateRecordConfig} from '../controller/validate_config';
-
-const LOCAL_STORAGE_RECORD_CONFIGS_KEY = 'recordConfigs';
-
-class NamedRecordConfig {
- title: string;
- config: RecordConfig;
- key: string;
-
- constructor(title: string, config: RecordConfig, key: string) {
- this.title = title;
- this.config = this.validateData(config);
- this.key = key;
- }
-
- private validateData(config: {}): RecordConfig {
- const validConfig = validateRecordConfig(config);
- if (validConfig.errorMessage) {
- // TODO(bsebastien): Show a warning message to the user in the UI.
- console.warn(validConfig.errorMessage);
- }
- return validConfig.config;
- }
-
- static isValid(jsonObject: object): jsonObject is NamedRecordConfig {
- return (jsonObject as NamedRecordConfig).title !== undefined &&
- (jsonObject as NamedRecordConfig).config !== undefined &&
- (jsonObject as NamedRecordConfig).key !== undefined;
- }
-}
-
-export class RecordConfigStore {
- recordConfigs: NamedRecordConfig[];
-
- constructor() {
- this.recordConfigs = [];
- this.reloadFromLocalStorage();
- }
-
- save(recordConfig: RecordConfig, title?: string): void {
- // We reload from local storage in case of concurrent
- // modifications of local storage from a different tab.
- this.reloadFromLocalStorage();
-
- const config = new NamedRecordConfig(
- title ? title : new Date().toJSON(), recordConfig, new Date().toJSON());
-
- this.recordConfigs.push(config);
- window.localStorage.setItem(
- LOCAL_STORAGE_RECORD_CONFIGS_KEY, JSON.stringify(this.recordConfigs));
- }
-
- delete(key: string): void {
- // We reload from local storage in case of concurrent
- // modifications of local storage from a different tab.
- this.reloadFromLocalStorage();
-
- let idx = -1;
- for (let i = 0; i < this.recordConfigs.length; ++i) {
- if (this.recordConfigs[i].key === key) {
- idx = i;
- break;
- }
- }
-
- if (idx !== -1) {
- this.recordConfigs.splice(idx, 1);
- window.localStorage.setItem(
- LOCAL_STORAGE_RECORD_CONFIGS_KEY, JSON.stringify(this.recordConfigs));
- } else {
- // TODO(bsebastien): Show a warning message to the user in the UI.
- console.warn('The config selected doesn\'t exist any more');
- }
- }
-
- private clearRecordConfigs(): void {
- this.recordConfigs = [];
- window.localStorage.setItem(
- LOCAL_STORAGE_RECORD_CONFIGS_KEY, JSON.stringify([]));
- }
-
- reloadFromLocalStorage(): void {
- const configsLocalStorage =
- window.localStorage.getItem(LOCAL_STORAGE_RECORD_CONFIGS_KEY);
-
- if (configsLocalStorage) {
- try {
- const validConfigLocalStorage: NamedRecordConfig[] = [];
- const parsedConfigsLocalStorage = JSON.parse(configsLocalStorage);
-
- // Check if it's an array.
- if (!Array.isArray(parsedConfigsLocalStorage)) {
- this.clearRecordConfigs();
- return;
- }
-
- for (let i = 0; i < parsedConfigsLocalStorage.length; ++i) {
- if (!NamedRecordConfig.isValid(parsedConfigsLocalStorage[i])) {
- continue;
- }
- validConfigLocalStorage.push(new NamedRecordConfig(
- parsedConfigsLocalStorage[i].title,
- parsedConfigsLocalStorage[i].config,
- parsedConfigsLocalStorage[i].key));
- }
-
- this.recordConfigs = validConfigLocalStorage;
- window.localStorage.setItem(
- LOCAL_STORAGE_RECORD_CONFIGS_KEY,
- JSON.stringify(validConfigLocalStorage));
- } catch (e) {
- this.clearRecordConfigs();
- }
- } else {
- this.clearRecordConfigs();
- }
- }
-}
-
-// This class is a singleton to avoid many instances
-// conflicting as they attempt to edit localStorage.
-export const recordConfigStore = new RecordConfigStore();