MCPcopy Create free account
hub / github.com/Monogatari/Monogatari / setupStorage

Function setupStorage

src/engine/persistence.ts:166–279  ·  view source on GitHub ↗
(engine: VisualNovelEngine)

Source from the content-addressed store, hash-verified

164// ============================================================================
165
166export function setupStorage (engine: VisualNovelEngine): void {
167 // Check if an Adapter has been set or else, the global local storage
168 // object will be used
169 const storageSetting = engine.setting ('Storage');
170
171 if (storageSetting.Adapter.trim () !== '') {
172 let adapter;
173 const props: Record<string, unknown> = {};
174
175 switch (storageSetting.Adapter) {
176 case 'LocalStorage':
177 adapter = SpaceAdapter.LocalStorage;
178 break;
179
180 case 'SessionStorage':
181 adapter = SpaceAdapter.SessionStorage;
182 break;
183
184 case 'IndexedDB':
185 adapter = SpaceAdapter.IndexedDB;
186 props.keyPath = 'id';
187 break;
188
189 case 'RemoteStorage':
190 adapter = SpaceAdapter.RemoteStorage;
191 props.headers = {
192 'Content-Type': 'application/json',
193 };
194 break;
195
196 case 'FileSystem': {
197 const bridge = getDesktopBridge();
198
199 if (bridge) {
200 const fsStorage = new FileSystemStorage(bridge);
201
202 fsStorage.configuration({
203 name: Text.friendly(engine.setting('Name') as string),
204 version: engine.setting('Version') as string,
205 store: storageSetting.Store,
206 });
207
208 engine.Storage = fsStorage as unknown as StorageInterface;
209 } else {
210 FancyError.show('engine:storage:filesystem_no_bridge', {});
211
212 // Fall back to IndexedDB so the game remains functional
213 adapter = SpaceAdapter.IndexedDB;
214 }
215 break;
216 }
217
218 default:
219 adapter = SpaceAdapter.IndexedDB;
220 break;
221 }
222
223 if (window.navigator && !Platform.desktopApp && !Platform.cordova) {

Callers

nothing calls this directly

Calls 9

configurationMethod · 0.95
getDesktopBridgeFunction · 0.90
settingMethod · 0.80
keysMethod · 0.65
upgradeMethod · 0.65
getAllMethod · 0.65
removeMethod · 0.65
setMethod · 0.65
showMethod · 0.45

Tested by

no test coverage detected