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