import * as React from "bloatless-react"; import StorageModel, { PATH_COMPONENT_SEPARATOR, } from "../../Model/Global/storageModel"; import CoreViewModel, { Context } from "./coreViewModel"; import { CommonKeys } from "../../View/keystrokes"; export default class StorageViewModel extends Context { contextDebugDescription = "storage"; // state isShowingStorageModal: React.State = new React.State(false); selectedPath: React.State = new React.State( PATH_COMPONENT_SEPARATOR, ); didMakeChanges: React.State = new React.State(false); selectedFileName: React.State; selectedFileContent: React.State; lastDeletedItemPath: React.State = new React.State(""); // methods getSelectedItemContent = (): string => { const path = StorageModel.stringToPathComponents( this.selectedPath.value, ); const content = this.coreViewModel.storageModel.read(path); return ( (content ?? this.coreViewModel.translations.storage.notAFile) || this.coreViewModel.translations.storage.contentEmpty ); }; deleteSelectedItem = (): void => { const path = StorageModel.stringToPathComponents( this.selectedPath.value, ); this.lastDeletedItemPath.value = this.selectedPath.value; this.coreViewModel.storageModel.removeRecursively(path); this.didMakeChanges.value = true; }; removeJunk = (): void => { this.coreViewModel.storageModel.removeJunk(); this.selectedPath.value = PATH_COMPONENT_SEPARATOR; }; // view showStorageModal = (): void => { this.coreViewModel.context = this; this.isShowingStorageModal.value = true; }; hideStorageModal = (): void => { this.coreViewModel.closeContext(this.contextId); if (this.didMakeChanges.value == true) { window.location.reload(); return; } this.isShowingStorageModal.value = false; }; // init constructor(public coreViewModel: CoreViewModel) { super(); this.selectedFileName = React.createProxyState( [this.selectedPath], () => StorageModel.getFileNameFromString(this.selectedPath.value), ); this.selectedFileContent = React.createProxyState( [this.selectedPath], () => this.getSelectedItemContent(), ); // keystrokes this.registerKeyStroke(CommonKeys.CloseOrCancel, this.hideStorageModal); } }