[MM-54701] Fix development deep linking for login for Windows/Linux (#2867)
* [MM-54701] Add exec and dist path for Windows dev deep linking * Add script for Linux to add a desktop entry for deep linking * Fix build
This commit is contained in:
parent
013d46da8a
commit
02261c9de3
|
@ -76,7 +76,7 @@
|
||||||
"prune": "ts-prune",
|
"prune": "ts-prune",
|
||||||
"mmjstool": "mmjstool",
|
"mmjstool": "mmjstool",
|
||||||
"i18n-extract": "npm run mmjstool -- i18n extract-desktop",
|
"i18n-extract": "npm run mmjstool -- i18n extract-desktop",
|
||||||
"postinstall": "node scripts/patch_macos_notification_state.js && electron-builder install-app-deps"
|
"postinstall": "node scripts/postinstall.js && electron-builder install-app-deps"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"clearMocks": true,
|
"clearMocks": true,
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
|
||||||
// See LICENSE.txt for license information.
|
|
||||||
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const jq = require('node-jq');
|
|
||||||
|
|
||||||
jq.run(
|
|
||||||
'.scripts.install = "node-gyp rebuild"',
|
|
||||||
'./node_modules/macos-notification-state/package.json',
|
|
||||||
).then((result) => {
|
|
||||||
fs.writeFileSync(
|
|
||||||
'./node_modules/macos-notification-state/package.json',
|
|
||||||
result,
|
|
||||||
);
|
|
||||||
});
|
|
52
scripts/postinstall.js
Normal file
52
scripts/postinstall.js
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const jq = require('node-jq');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
// Patch the macos-notification-state library so we can build correctly
|
||||||
|
jq.run(
|
||||||
|
'.scripts.install = "node-gyp rebuild"',
|
||||||
|
'./node_modules/macos-notification-state/package.json',
|
||||||
|
).then((result) => {
|
||||||
|
fs.writeFileSync(
|
||||||
|
'./node_modules/macos-notification-state/package.json',
|
||||||
|
result,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// For linux dev, drop a desktop shortcut so deep linking works correctly
|
||||||
|
if (process.platform === 'linux') {
|
||||||
|
const xdgDir = path.resolve(process.env.HOME, '.local/share/applications');
|
||||||
|
if (fs.existsSync(xdgDir) && !fs.existsSync(path.resolve(xdgDir, 'mattermost-desktop-dev.desktop'))) {
|
||||||
|
fs.writeFileSync(
|
||||||
|
path.resolve(xdgDir, 'mattermost-desktop-dev.desktop'),
|
||||||
|
`[Desktop Entry]
|
||||||
|
Name=Mattermost.Dev
|
||||||
|
Exec=${path.resolve(process.cwd(), 'node_modules/electron/dist/electron')} ${path.resolve(process.cwd(), 'dist')} %U
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=mattermost-desktop
|
||||||
|
StartupWMClass=Mattermost
|
||||||
|
Comment=Mattermost
|
||||||
|
MimeType=x-scheme-handler/mattermost-dev;
|
||||||
|
Categories=contrib/net;
|
||||||
|
`
|
||||||
|
);
|
||||||
|
|
||||||
|
const defaultsListPath = path.resolve(xdgDir, 'defaults.list');
|
||||||
|
if (!fs.existsSync(defaultsListPath)) {
|
||||||
|
fs.writeFileSync(defaultsListPath, '[Default Applications]\n');
|
||||||
|
}
|
||||||
|
fs.appendFileSync(defaultsListPath, 'x-scheme-handler/mattermost-dev=mattermost-desktop-dev.desktop\n');
|
||||||
|
|
||||||
|
const mimeCachePath = path.resolve(xdgDir, 'mimeinfo.cache');
|
||||||
|
if (!fs.existsSync(mimeCachePath)) {
|
||||||
|
fs.writeFileSync(mimeCachePath, '[MIME Cache]\n');
|
||||||
|
}
|
||||||
|
fs.appendFileSync(mimeCachePath, 'x-scheme-handler/mattermost-dev=mattermost-desktop-dev.desktop\n');
|
||||||
|
|
||||||
|
console.log('NOTE: You may need to log in and out of your session to ensure that deep linking works correctly.');
|
||||||
|
}
|
||||||
|
}
|
|
@ -236,7 +236,7 @@ function initializeBeforeAppReady() {
|
||||||
AllowProtocolDialog.init();
|
AllowProtocolDialog.init();
|
||||||
|
|
||||||
if (isDev && process.env.NODE_ENV !== 'test') {
|
if (isDev && process.env.NODE_ENV !== 'test') {
|
||||||
app.setAsDefaultProtocolClient('mattermost-dev');
|
app.setAsDefaultProtocolClient('mattermost-dev', process.execPath, [path.resolve(process.cwd(), 'dist/')]);
|
||||||
} else if (mainProtocol) {
|
} else if (mainProtocol) {
|
||||||
app.setAsDefaultProtocolClient(mainProtocol);
|
app.setAsDefaultProtocolClient(mainProtocol);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue