File size: 1,412 Bytes
c34c995
 
 
 
 
 
 
 
 
 
4f33245
 
c34c995
 
 
 
 
 
4f33245
c34c995
4f33245
c34c995
 
4f33245
 
 
c34c995
 
4f33245
 
c34c995
 
 
4f33245
c34c995
 
4f33245
c34c995
 
4f33245
 
c34c995
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// SPDX-FileCopyrightText: Hadad <hadad@linuxmail.org>
// SPDX-License-Identifier: Apache-2.0
//

import config from '../../config.js';

const tempStorage = new Map();
const activeGenerations = new Map();

export const getStorage = (sessionId) => {
  const data = tempStorage.get(sessionId);
  if (data) {
    data.lastAccess = Date.now();
  }
  return data;
};

export const setStorage = (sessionId, data) => {
  data.lastAccess = Date.now();
  tempStorage.set(sessionId, data);
};

export const deleteStorage = (sessionId) => {
  tempStorage.delete(sessionId);
  activeGenerations.delete(sessionId);
};

export const getActiveGeneration = (sessionId) => {
  return activeGenerations.get(sessionId);
};

export const setActiveGeneration = (
  sessionId, 
  controller
) => {
  activeGenerations.set(sessionId, controller);
};

export const deleteActiveGeneration = (sessionId) => {
  activeGenerations.delete(sessionId);
};

export const getDefaultData = () => ({
  images: [],
  isGenerating: false,
  progress: 0,
  error: null,
  lastAccess: Date.now()
});

export const initCleanup = () => {
  setInterval(() => {
    const now = Date.now();
    const maxAge = config.storage.maxAge;
    
    for (const [key, value] of tempStorage.entries()) {
      if (!value.lastAccess || 
          now - value.lastAccess > maxAge) {
        deleteStorage(key);
      }
    }
  }, config.storage.cleanupInterval);
};