1
0
mirror of https://github.com/rhysd/Mstdn.git synced 2025-02-17 20:54:16 +01:00

allow host to contain 'https://' or 'http://'

This commit is contained in:
rhysd 2017-04-23 23:04:03 +09:00
parent aa6d196f2b
commit 5429c0150c
4 changed files with 15 additions and 6 deletions

View File

@ -12,3 +12,4 @@
*.ts *.ts
*.js.map *.js.map
/typings /typings
/.github

View File

@ -1,6 +1,6 @@
import {app, Menu, globalShortcut, Tray} from 'electron'; import {app, Menu, globalShortcut, Tray} from 'electron';
import log from './log'; import log from './log';
import {Config, Account} from './config'; import {Config, Account, hostUrl} from './config';
import AccountSwitcher from './account_switcher'; import AccountSwitcher from './account_switcher';
import defaultMenu from './default_menu'; import defaultMenu from './default_menu';
import Window from './window'; import Window from './window';
@ -26,7 +26,7 @@ export class App {
start() { start() {
const a = this.switcher.current; const a = this.switcher.current;
const url = `https://${a.host}${a.default_page}`; const url = hostUrl(a) + a.default_page;
this.win.open(url); this.win.open(url);
log.debug('Application started', a, url); log.debug('Application started', a, url);
} }

View File

@ -73,6 +73,14 @@ function recommendConfigAndDie(file: string) {
showDyingDialog(title, detail); showDyingDialog(title, detail);
} }
export function hostUrl(a: Account) {
if (a.host.startsWith('https://') || a.host.startsWith('http://')) {
return a.host;
} else {
return 'https://' + a.host;
}
}
export default function loadConfig(): Promise<Config> { export default function loadConfig(): Promise<Config> {
return new Promise<Config>(resolve => { return new Promise<Config>(resolve => {
fs.readFile(CONFIG_FILE, 'utf8', (err, json) => { fs.readFile(CONFIG_FILE, 'utf8', (err, json) => {

View File

@ -2,7 +2,7 @@ import * as fs from 'fs';
import {app, BrowserWindow, shell, dialog, Menu} from 'electron'; import {app, BrowserWindow, shell, dialog, Menu} from 'electron';
import windowState = require('electron-window-state'); import windowState = require('electron-window-state');
import * as menubar from 'menubar'; import * as menubar from 'menubar';
import {Config, Account} from './config'; import {Config, Account, hostUrl} from './config';
import {partitionForAccount} from './account_switcher'; import {partitionForAccount} from './account_switcher';
import log from './log'; import log from './log';
import {IS_DEBUG, IS_DARWIN, IS_WINDOWS, IS_LINUX, APP_ICON, PRELOAD_JS, USER_CSS, trayIcon} from './common'; import {IS_DEBUG, IS_DARWIN, IS_WINDOWS, IS_LINUX, APP_ICON, PRELOAD_JS, USER_CSS, trayIcon} from './common';
@ -35,7 +35,7 @@ export default class Window {
} }
browser.webContents.on('will-navigate', (e, url) => { browser.webContents.on('will-navigate', (e, url) => {
if (!url.startsWith(`https://${this.account.host}`)) { if (!url.startsWith(hostUrl(this.account))) {
e.preventDefault(); e.preventDefault();
shell.openExternal(url); shell.openExternal(url);
} }
@ -56,7 +56,7 @@ export default class Window {
browser.webContents.session.setPermissionRequestHandler((contents, permission, callback) => { browser.webContents.session.setPermissionRequestHandler((contents, permission, callback) => {
const url = contents.getURL(); const url = contents.getURL();
const grantedByDefault = const grantedByDefault =
url.startsWith(`https://${this.account.host}`) && url.startsWith(hostUrl(this.account)) &&
permission !== 'geolocation' && permission !== 'geolocation' &&
permission !== 'media'; permission !== 'media';
@ -88,7 +88,7 @@ export default class Window {
} }
log.debug('Redirecting to ' + newUrl + '. Will navigate to login page for user using single user mode'); log.debug('Redirecting to ' + newUrl + '. Will navigate to login page for user using single user mode');
e.preventDefault(); e.preventDefault();
this.browser.loadURL(`https://${this.account.host}/auth/sign_in`); this.browser.loadURL(hostUrl(this.account) + '/auth/sign_in');
}); });
this.browser.loadURL(url); this.browser.loadURL(url);
} }