xref: /aosp_15_r20/external/pigweed/pw_web/webconsole/components/repl/localStorageArray.ts (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1// Copyright 2022 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14
15export default class LocalStorageArray {
16  data: string[] = [];
17  maxSize: number;
18  key = '__pw_repl_history';
19
20  constructor(maxSize = 4) {
21    this.maxSize = maxSize;
22    const curHistory = localStorage.getItem(this.key);
23    if (curHistory) {
24      this.data = JSON.parse(localStorage.getItem(this.key)!);
25    }
26  }
27
28  unshift(data: string) {
29    this.data.unshift(data);
30    if (this.data.length > this.maxSize) {
31      this.data = this.data.slice(0, this.maxSize);
32    }
33    localStorage.setItem(this.key, JSON.stringify(this.data));
34  }
35
36  clear() {
37    this.data = [];
38    localStorage.removeItem(this.key);
39  }
40}
41