mirror of
				https://github.com/zulip/zulip-desktop.git
				synced 2025-11-04 05:53:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import electron from 'electron';
 | 
						|
import fs from 'fs';
 | 
						|
 | 
						|
const app = process.type === 'renderer' ? electron.remote.app : electron.app;
 | 
						|
let setupCompleted = false;
 | 
						|
 | 
						|
const zulipDir = app.getPath('userData');
 | 
						|
const logDir = `${zulipDir}/Logs/`;
 | 
						|
const configDir = `${zulipDir}/config/`;
 | 
						|
export const initSetUp = (): void => {
 | 
						|
	// If it is the first time the app is running
 | 
						|
	// create zulip dir in userData folder to
 | 
						|
	// avoid errors
 | 
						|
	if (!setupCompleted) {
 | 
						|
		if (!fs.existsSync(zulipDir)) {
 | 
						|
			fs.mkdirSync(zulipDir);
 | 
						|
		}
 | 
						|
 | 
						|
		if (!fs.existsSync(logDir)) {
 | 
						|
			fs.mkdirSync(logDir);
 | 
						|
		}
 | 
						|
 | 
						|
		// Migrate config files from app data folder to config folder inside app
 | 
						|
		// data folder. This will be done once when a user updates to the new version.
 | 
						|
		if (!fs.existsSync(configDir)) {
 | 
						|
			fs.mkdirSync(configDir);
 | 
						|
			const domainJson = `${zulipDir}/domain.json`;
 | 
						|
			const settingsJson = `${zulipDir}/settings.json`;
 | 
						|
			const updatesJson = `${zulipDir}/updates.json`;
 | 
						|
			const windowStateJson = `${zulipDir}/window-state.json`;
 | 
						|
			const configData = [
 | 
						|
				{
 | 
						|
					path: domainJson,
 | 
						|
					fileName: 'domain.json'
 | 
						|
				},
 | 
						|
				{
 | 
						|
					path: settingsJson,
 | 
						|
					fileName: 'settings.json'
 | 
						|
				},
 | 
						|
				{
 | 
						|
					path: updatesJson,
 | 
						|
					fileName: 'updates.json'
 | 
						|
				}
 | 
						|
			];
 | 
						|
			for (const data of configData) {
 | 
						|
				if (fs.existsSync(data.path)) {
 | 
						|
					fs.copyFileSync(data.path, configDir + data.fileName);
 | 
						|
					fs.unlinkSync(data.path);
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			// `window-state.json` is only deleted not moved, as the electron-window-state
 | 
						|
			// package will recreate the file in the config folder.
 | 
						|
			if (fs.existsSync(windowStateJson)) {
 | 
						|
				fs.unlinkSync(windowStateJson);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		setupCompleted = true;
 | 
						|
	}
 | 
						|
};
 |