Upload files to "/"
This commit is contained in:
		
							parent
							
								
									ef09edb0cf
								
							
						
					
					
						commit
						cee70c15bc
					
				
							
								
								
									
										19
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					BIN ?= ./node_modules/.bin/
 | 
				
			||||||
 | 
					ESLINT	?= ./node_modules/.bin/eslint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						npm run clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					node_modules: package.json package-lock.json
 | 
				
			||||||
 | 
						npm i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					serve: node_modules
 | 
				
			||||||
 | 
						npm start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dist: node_modules
 | 
				
			||||||
 | 
						npm dist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: eslint
 | 
				
			||||||
 | 
					eslint: node_modules
 | 
				
			||||||
 | 
						$(ESLINT) *.js
 | 
				
			||||||
 | 
						$(ESLINT) app/**/*.js
 | 
				
			||||||
							
								
								
									
										75
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "@rs/desktop",
 | 
				
			||||||
 | 
					  "productName": "RS Desktop",
 | 
				
			||||||
 | 
					  "version": "10.1.5",
 | 
				
			||||||
 | 
					  "description": "RS Desktop is a Jabber/XMPP client based on Converse-desktop",
 | 
				
			||||||
 | 
					  "main": "main.js",
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "clean": "rm -rf node_modules",
 | 
				
			||||||
 | 
					    "postinstall": "electron-builder install-app-deps",
 | 
				
			||||||
 | 
					    "start": "electron ./main.js",
 | 
				
			||||||
 | 
					    "pack": "electron-builder --dir",
 | 
				
			||||||
 | 
					    "dist": "electron-builder --mac --universal",
 | 
				
			||||||
 | 
					    "dist:win64": "electron-builder --win --x64",
 | 
				
			||||||
 | 
					    "dist:linux64": "electron-builder --linux --x64"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "author": "RandomServer Community",
 | 
				
			||||||
 | 
					  "repository": "https://git.randomserver.top/legacytard-association/converse.rs",
 | 
				
			||||||
 | 
					  "keywords": [
 | 
				
			||||||
 | 
					    "RS",
 | 
				
			||||||
 | 
					    "RandomServer",
 | 
				
			||||||
 | 
					    "RS Desktop",
 | 
				
			||||||
 | 
					    "Jabber",
 | 
				
			||||||
 | 
					    "XMPP",
 | 
				
			||||||
 | 
					    "Client",
 | 
				
			||||||
 | 
					    "converse.js",
 | 
				
			||||||
 | 
					    "Electron",
 | 
				
			||||||
 | 
					    "OMEMO"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "license": "MPL-2.0",
 | 
				
			||||||
 | 
					  "type": "module",
 | 
				
			||||||
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "electron": "^28.0.0",
 | 
				
			||||||
 | 
					    "electron-builder": "^23.0.0",
 | 
				
			||||||
 | 
					    "electron-packager": "^17.0.0",
 | 
				
			||||||
 | 
					    "electron-rebuild": "^3.2.9",
 | 
				
			||||||
 | 
					    "eslint": "^8.12.0"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "converse.js": "^10.1.8",
 | 
				
			||||||
 | 
					    "electron-settings": "^4.0.2",
 | 
				
			||||||
 | 
					    "keytar": "^7.9.0",
 | 
				
			||||||
 | 
					    "node-abi": "^4.8.0",
 | 
				
			||||||
 | 
					    "find-bar": "^0.1.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "build": {
 | 
				
			||||||
 | 
					    "appId": "com.rscommunity.rs-desktop",
 | 
				
			||||||
 | 
					    "productName": "RS Desktop",
 | 
				
			||||||
 | 
					    "extraFiles": [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "from": "resources/images/logo.svg",
 | 
				
			||||||
 | 
					        "to": "converse-desktop.svg"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "mac": {
 | 
				
			||||||
 | 
					      "category": "public.app-category.social-networking",
 | 
				
			||||||
 | 
					      "icon": "resources/images/logo.icns",
 | 
				
			||||||
 | 
					      "target": "dmg"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "linux": {
 | 
				
			||||||
 | 
					      "maintainer": "RS Community <xaxaxa@randomserver.top>",
 | 
				
			||||||
 | 
					      "artifactName": "converse_desktop-${version}_${arch}.${ext}",
 | 
				
			||||||
 | 
					      "icon": "resources/images",
 | 
				
			||||||
 | 
					      "target": [
 | 
				
			||||||
 | 
					        "deb",
 | 
				
			||||||
 | 
					        "tar.gz",
 | 
				
			||||||
 | 
					        "appImage"
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "win": {
 | 
				
			||||||
 | 
					      "target": "nsis",
 | 
				
			||||||
 | 
					      "icon": "resources/images/logo.ico"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										79
									
								
								preload.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								preload.cjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,79 @@
 | 
				
			|||||||
 | 
					const { contextBridge, ipcRenderer } = require('electron');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const changedHandlers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ipcRenderer.on('settings', (e, method, setting, newValue) => {
 | 
				
			||||||
 | 
					    if (method === 'changed') {
 | 
				
			||||||
 | 
					        for (const handler of changedHandlers) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                handler(setting, newValue);
 | 
				
			||||||
 | 
					            } catch (err) {
 | 
				
			||||||
 | 
					                console.error('Error in settings changed handler:', err);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					contextBridge.exposeInMainWorld('api', {
 | 
				
			||||||
 | 
					    settings: {
 | 
				
			||||||
 | 
					        has(setting) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('settings', 'has', setting);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        set(setting, value) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('settings', 'set', setting, value);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        unset(setting) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('settings', 'unset', setting);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        get(setting) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('settings', 'get', setting);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        changed(callback) {
 | 
				
			||||||
 | 
					            if (typeof callback === 'function') {
 | 
				
			||||||
 | 
					                changedHandlers.push(callback);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                console.warn('api.settings.changed: callback is not a function');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    trayService: {
 | 
				
			||||||
 | 
					        showEnvelope() {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('trayService', 'showEnvelope');
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        hideEnvelope() {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('trayService', 'hideEnvelope');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    keytar: {
 | 
				
			||||||
 | 
					        getPassword(service, login) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('keytar', 'getPassword', service, login);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        setPassword(service, login, password) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('keytar', 'setPassword', service, login, password);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        deletePassword(service, login) {
 | 
				
			||||||
 | 
					            return ipcRenderer.invoke('keytar', 'deletePassword', service, login);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    app: {
 | 
				
			||||||
 | 
					        quit() {
 | 
				
			||||||
 | 
					            ipcRenderer.send('app-quit');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.addEventListener('wheel', (event) => {
 | 
				
			||||||
 | 
					    if (event.ctrlKey) {
 | 
				
			||||||
 | 
					        ipcRenderer.send(event.deltaY > 0 ? 'increaseZoom' : 'decreaseZoom');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.addEventListener('keydown', (event) => {
 | 
				
			||||||
 | 
					    if (event.ctrlKey) {
 | 
				
			||||||
 | 
					        if (event.key === '+' || event.key === '=') {
 | 
				
			||||||
 | 
					            ipcRenderer.send('increaseZoom');
 | 
				
			||||||
 | 
					        } else if (event.key === '-') {
 | 
				
			||||||
 | 
					            ipcRenderer.send('decreaseZoom');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										55
									
								
								setup.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								setup.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					(async () => {
 | 
				
			||||||
 | 
					    await import('./app/converse-plugins/desktop-credentials.js');
 | 
				
			||||||
 | 
					    await import('./app/converse-plugins/desktop-trayicon.js');
 | 
				
			||||||
 | 
					    await import('./app/converse-plugins/desktop-settings.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const { getCredentials } = await import('./app/credentials.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let websocket_url;
 | 
				
			||||||
 | 
					    let bosh_service_url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const { connectionManager, login, password } = await getCredentials();
 | 
				
			||||||
 | 
					    const priority = (await api.settings.get('priority')) || 0;
 | 
				
			||||||
 | 
					    const omemo_default = (await api.settings.get('omemo_default')) || false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (connectionManager?.startsWith('ws')) {
 | 
				
			||||||
 | 
					        websocket_url = connectionManager;
 | 
				
			||||||
 | 
					    } else if (connectionManager?.startsWith('http')) {
 | 
				
			||||||
 | 
					        bosh_service_url = connectionManager;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    converse.plugins.add('converse-debug', {
 | 
				
			||||||
 | 
					        initialize() {
 | 
				
			||||||
 | 
					            const { _converse } = this;
 | 
				
			||||||
 | 
					            window._converse = _converse;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    converse.initialize({
 | 
				
			||||||
 | 
					        assets_path: './node_modules/converse.js/dist/',
 | 
				
			||||||
 | 
					        auto_login: login && password,
 | 
				
			||||||
 | 
					        bosh_service_url,
 | 
				
			||||||
 | 
					        i18n: navigator.language,
 | 
				
			||||||
 | 
					        jid: login,
 | 
				
			||||||
 | 
					        loglevel: 'debug',
 | 
				
			||||||
 | 
					        muc_respect_autojoin: true,
 | 
				
			||||||
 | 
					        muc_show_logs_before_join: true,
 | 
				
			||||||
 | 
					        password,
 | 
				
			||||||
 | 
					        play_sounds: false,
 | 
				
			||||||
 | 
					        priority,
 | 
				
			||||||
 | 
					        prune_messages_above: 250,
 | 
				
			||||||
 | 
					        // theme: 'classic', // there is no need for themes when using RS css.
 | 
				
			||||||
 | 
					        view_mode: 'fullscreen',
 | 
				
			||||||
 | 
					        websocket_url,
 | 
				
			||||||
 | 
					        whitelisted_plugins: [
 | 
				
			||||||
 | 
					            'converse-debug',
 | 
				
			||||||
 | 
					            'converse-desktop-credentials',
 | 
				
			||||||
 | 
					            'converse-desktop-trayicon',
 | 
				
			||||||
 | 
					            'converse-desktop-settings'
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        omemo_default
 | 
				
			||||||
 | 
					    }).catch(reason => {
 | 
				
			||||||
 | 
					        console.error(reason);
 | 
				
			||||||
 | 
					        api.app.quit();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
		Reference in New Issue
	
	Block a user