pre: code-skip setup, fix: compatible info

This commit is contained in:
cutls 2022-12-08 00:25:09 +09:00
parent f573ecc9eb
commit d5ca0bad24
9 changed files with 111 additions and 103 deletions

View File

@ -367,9 +367,13 @@ function support() {
} }
}) })
} }
function backToInit() {
$('#auth').hide()
$('#add').show()
}
//URL指定してポップアップ //URL指定してポップアップ
function login(url) { async function login(url) {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
if ($('#misskey:checked').val() == 'on') { if ($('#misskey:checked').val() == 'on') {
@ -378,16 +382,18 @@ function login(url) {
return return
} }
$('#compt').hide() $('#compt').hide()
if ($('#linux:checked').val() == 'on') { const start = `https://${url}/api/v1/apps`
var red = 'urn:ietf:wg:oauth:2.0:oob' $('#loginBtn').attr('disabled', true)
const nextSetup = await versionChecker(url)
$('#loginBtn').attr('disabled', false)
let red = 'thedesk://manager'
if (!nextSetup) {
red = 'urn:ietf:wg:oauth:2.0:oob'
if (~url.indexOf('pixelfed')) { if (~url.indexOf('pixelfed')) {
red = 'https://thedesk.top/hello.html' red = 'https://thedesk.top/hello.html'
} }
} else {
var red = 'thedesk://manager'
} }
localStorage.setItem('redirect', red) localStorage.setItem('redirect', red)
var start = 'https://' + url + '/api/v1/apps'
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')
@ -420,103 +426,86 @@ function login(url) {
localStorage.setItem('client_id', json['client_id']) localStorage.setItem('client_id', json['client_id'])
localStorage.setItem('client_secret', json['client_secret']) localStorage.setItem('client_secret', json['client_secret'])
$('#auth').show() $('#auth').show()
versionChecker(url)
$('#add').hide() $('#add').hide()
postMessage(['openUrl', auth], '*') postMessage(['openUrl', auth], '*')
} }
} }
} }
function versionChecker(url) { async function versionChecker(url) {
var start = 'https://' + url + '/api/v1/instance' const start = `https://${url}/api/v1/instance`
fetch(start, { try {
method: 'GET', const response = await fetch(start, {
headers: { method: 'GET',
'content-type': 'application/json' headers: {
'content-type': 'application/json'
}
})
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
} }
}) const json = await response.json()
.then(function (response) { const version = json.version
if (!response.ok) { if (version) {
response.text().then(function (text) { const reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
setLog(response.url, response.status, text) if (reg) versionCompat(json.title, version)
if (version.match('compatible')) {
$('#compt-warn').show()
return false
} else {
$('#compt-warn').hide()
if (pwa) return true
const codeSetupCheck = await Swal.fire({
title: lang.lang_manager_codesetup_title,
text: lang.lang_manager_codesetup,
icon: 'info',
showCancelButton: true
}) })
if (!codeSetupCheck.isConfirmed) return false
return true
} }
return response.json() }
}) } catch {
.catch(function (error) { return false
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
var version = json.version
if (version) {
var reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
if (reg) {
versionCompat(reg[1], reg, json.title, reg[0])
}
}
})
}
function versionCompat(prefix, ver, title, real) {
$('#compt-instance').text(title)
$('#compt-ver').text(real)
if (~real.indexOf('compatible')) {
$('#compt-warn').show()
} else {
$('#compt-warn').hide()
} }
}
async function versionCompat(title, version) {
const [sem, a, b, c] = version.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
$('#compt-instance').text(title)
$('#compt-ver').text(version)
$('#compt-list').html('') $('#compt-list').html('')
var start = '../../source/version.json' var start = '../../source/version.json'
fetch(start, { const response = await fetch(start)
method: 'GET', const json = await response.json()
headers: { const keys = Object.keys(json)
'content-type': 'application/json' let i = 0
let onceAdd = false
for (const targetVersion of keys) {
const data = json[targetVersion]
const [tsem, ta, tb, tc] = targetVersion.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
let add = false
if (ta === a) {
if (tb === b) {
if (tc > c) {
add = true
}
} else if (tb > b) {
add = true
}
} else if (ta > a) {
add = true
} }
}) if (!add) break
.then(function (response) { if (add) onceAdd = true
if (!response.ok) { for (const note of data) {
response.text().then(function (text) { $('#compt-list').append(`<li>${note}(${targetVersion})</li>`)
setLog(response.url, response.status, text) }
}) i++
} }
return response.json() if (lang.language == 'ja' && onceAdd) {
}) $('#compt').show()
.catch(function (error) { }
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
var complete = false
var ct = 0
var jl = 0
var jl2 = 0
Object.keys(json).forEach(function (key) {
var data = json[key]
if (data) {
jl++
if (key != real && !complete) {
for (var i = 0; i < data.length; i++) {
var e = ''
if (i == 0) {
e = '(' + key + ')'
}
$('#compt-list').append('<li>' + data[i] + e + '</li>')
ct++
e = ''
}
jl2++
} else if (!complete) {
complete = true
}
}
})
if (lang.language == 'ja' && ct > 0) {
if (jl2 != jl && prefix != '1') {
$('#compt').show()
}
}
})
} }
//これが後のMisskeyである。 //これが後のMisskeyである。
function misskeyLogin(url) { function misskeyLogin(url) {
@ -1156,9 +1145,8 @@ function asReadEnd() {
// Or with jQuery // Or with jQuery
$(document).ready(function(){ $(document).ready(function () {
$('input.autocomplete').autocomplete({ $('input.autocomplete').autocomplete({
data: {}, data: {},
}); });
}); });

View File

@ -1,5 +1,14 @@
{ {
"latest":[], "4.0.0": [
"トゥートの翻訳"
],
"3.5.0": [
"投稿の編集",
"トレンドタグ・投稿"
],
"3.3.0": [
"ミュートの継続時間設定"
],
"3.2.0": [], "3.2.0": [],
"3.1.5": [], "3.1.5": [],
"3.1.4": [ "3.1.4": [

View File

@ -55,8 +55,9 @@
<label for="autocomplete-input">URL</label> <label for="autocomplete-input">URL</label>
</div> </div>
<div class="col s4 loginBtnWrap"> <div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i <button class="btn waves-effect" id="loginBtn" onclick="instance()">
class="material-icons left">login</i>Login</button> <i class="material-icons left">login</i>Login
</button>
</div> </div>
</div> </div>
@ -80,6 +81,7 @@
</div> </div>
<div id="auth" style="display:none"> <div id="auth" style="display:none">
@@codepastewarn@@<br /> @@codepastewarn@@<br />
<a onclick="backToInit()" class="pointer">@@redo@@</a>
<input type="text" id="code" placeholder="@@codepaste@@" required /> <input type="text" id="code" placeholder="@@codepaste@@" required />
<button class="btn waves-effect" onclick="code()">Auth</button><br /> <button class="btn waves-effect" onclick="code()">Auth</button><br />
<br /> <br />

View File

@ -21,5 +21,6 @@
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.", "misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata":"No data", "nodata":"No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)", "accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page" "haveExported": "Having the exported file of TheDesk, click here to jump setting page",
"redo": "Retry(re-input address)"
} }

View File

@ -50,6 +50,8 @@
"lang_manager_logout": "Logout", "lang_manager_logout": "Logout",
"lang_manager_maxChars": "Max chars of toots", "lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain", "lang_manager_refreshAt": "Login with this domain",
"lang_manager_codesetup_title": "Skip code-setup",
"lang_manager_codesetup": "If you failed log-in, please click Cancel.",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", "lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get": "Get emojis", "lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis", "lang_emoji_custom": "Custom emojis",

View File

@ -19,5 +19,6 @@
"thisismisskey":"これはMisskeyや", "thisismisskey":"これはMisskeyや",
"misskeylogin":"", "misskeylogin":"",
"nodata":"アカウントあらへん", "nodata":"アカウントあらへん",
"accessTokenSetup": "アクセストークン使うてもいけるで(コードの代わりにアクセストークンを入れてクリックしてな: 一見さんお断り)" "accessTokenSetup": "アクセストークン使うてもいけるで(コードの代わりにアクセストークンを入れてクリックしてな: 一見さんお断り)",
"redo": "もっぺんやる"
} }

View File

@ -49,6 +49,8 @@
"lang_manager_godev": "", "lang_manager_godev": "",
"lang_manager_logout": "ログアウト", "lang_manager_logout": "ログアウト",
"lang_manager_refreshAt": "このドメインでログイン", "lang_manager_refreshAt": "このドメインでログイン",
"lang_manager_codesetup_title": "コードスキップログイン",
"lang_manager_codesetup": "ログインできひんのやったら、「キャンセル」を押してな",
"lang_bbmd_misskey": "TheDeskのMisskeyは、@を返信として扱うけんど、全ての@はなおされて別パラメータになってまう。ついでに、「未収載」は「ホーム」扱いや。", "lang_bbmd_misskey": "TheDeskのMisskeyは、@を返信として扱うけんど、全ての@はなおされて別パラメータになってまう。ついでに、「未収載」は「ホーム」扱いや。",
"lang_emoji_get": "絵文字リスト引っ張ってくる", "lang_emoji_get": "絵文字リスト引っ張ってくる",
"lang_emoji_custom": "カスタム絵文字", "lang_emoji_custom": "カスタム絵文字",

View File

@ -21,5 +21,6 @@
"misskeylogin":"<a href=\"https://thedesk.top/how-to-misskey-login.html\">ドキュメント</a>を参照して正しいコードを入れてください。", "misskeylogin":"<a href=\"https://thedesk.top/how-to-misskey-login.html\">ドキュメント</a>を参照して正しいコードを入れてください。",
"nodata":"アカウントがありません", "nodata":"アカウントがありません",
"accessTokenSetup": "アクセストークンを用いたセットアップ(コードの代わりにアクセストークンを入力してクリックしてください: 上級者向け)", "accessTokenSetup": "アクセストークンを用いたセットアップ(コードの代わりにアクセストークンを入力してクリックしてください: 上級者向け)",
"haveExported": "設定をインポートしたい場合、ここをクリックして設定画面に飛んでください" "haveExported": "設定をインポートしたい場合、ここをクリックして設定画面に飛んでください",
"redo": "やり直し"
} }

View File

@ -50,6 +50,8 @@
"lang_manager_logout": "ログアウト", "lang_manager_logout": "ログアウト",
"lang_manager_maxChars": "投稿最大文字数", "lang_manager_maxChars": "投稿最大文字数",
"lang_manager_refreshAt": "このドメインでログイン", "lang_manager_refreshAt": "このドメインでログイン",
"lang_manager_codesetup_title": "コードスキップログイン",
"lang_manager_codesetup": "うまくログインできなかった場合、「キャンセル」を押してください",
"lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。", "lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
"lang_emoji_get": "絵文字リストを取得", "lang_emoji_get": "絵文字リストを取得",
"lang_emoji_custom": "カスタム絵文字", "lang_emoji_custom": "カスタム絵文字",