mirror of
				https://github.com/zulip/zulip-desktop.git
				synced 2025-10-31 03:53:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import electron from 'electron';
 | |
| import fs from 'fs';
 | |
| 
 | |
| let app: Electron.App = null;
 | |
| let setupCompleted = false;
 | |
| if (process.type === 'renderer') {
 | |
| 	app = electron.remote.app;
 | |
| } else {
 | |
| 	app = electron.app;
 | |
| }
 | |
| 
 | |
| const zulipDir = app.getPath('userData');
 | |
| const logDir = `${zulipDir}/Logs/`;
 | |
| const certificatesDir = `${zulipDir}/certificates/`;
 | |
| 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);
 | |
| 		}
 | |
| 
 | |
| 		if (!fs.existsSync(certificatesDir)) {
 | |
| 			fs.mkdirSync(certificatesDir);
 | |
| 		}
 | |
| 
 | |
| 		// 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 certificatesJson = `${zulipDir}/certificates.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: certificatesJson,
 | |
| 					fileName: 'certificates.json'
 | |
| 				},
 | |
| 				{
 | |
| 					path: settingsJson,
 | |
| 					fileName: 'settings.json'
 | |
| 				},
 | |
| 				{
 | |
| 					path: updatesJson,
 | |
| 					fileName: 'updates.json'
 | |
| 				}
 | |
| 			];
 | |
| 			configData.forEach(data => {
 | |
| 				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;
 | |
| 	}
 | |
| };
 |