hunk.code_window:     })();
     }
     // release resources
     destroy = () => {
       this._db?.close();
       this.ydoc.destroy();
     };
     reconnectDB = () => {
  
hunk.labels: keep keep keep keep keep replace keep keep keep keep
hunk.after_edit:     this.sqliteDB?.close();
  
hunk.file_path: apps/electron/layers/main/src/data/sqlite.ts
hunk.type: replace
file: import { config, getEnvironment } from './config';
  import { isValidIPAddress } from './is-valid-ip-address';
  
  let prefixUrl = '/';
  if (typeof window === 'undefined' || getEnvironment().isDesktop) {
    // SSR or Desktop
    const serverAPI = config.serverAPI;
    if (isValidIPAddress(serverAPI.split(':')[0])) {
      // This is for Server side rendering support
      prefixUrl = new URL('http://' + config.serverAPI + '/').origin;
    } else {
      prefixUrl = serverAPI;
    }
    prefixUrl = prefixUrl.endsWith('/') ? prefixUrl : prefixUrl + '/';
  } else {
    const params = new URLSearchParams(window.location.search);
    if (params.get('prefixUrl')) {
      prefixUrl = params.get('prefixUrl') as string;
    } else {
      prefixUrl = window.location.origin + '/';
    }
  }
  
  const apiUrl = new URL(prefixUrl);
  const wsProtocol = apiUrl.protocol === 'https:' ? 'wss' : 'ws';
  const websocketPrefixUrl = `${wsProtocol}://${apiUrl.host}`;
  
  export { prefixUrl, websocketPrefixUrl };
  