tweak d627cdbf
This commit is contained in:
parent
d627cdbf2c
commit
f816764f37
|
@ -64,7 +64,7 @@ let noEmailServer = !instance.enableEmail;
|
|||
let thereIsUnresolvedAbuseReport = $ref(false);
|
||||
let currentPage = $computed(() => router.currentRef.value.child);
|
||||
let updateAvailable = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
let releasesCherryPick = $ref();
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
|
@ -76,9 +76,10 @@ os.api('admin/abuse-user-reports', {
|
|||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
if (meta.enableReceivePrerelease) releasesMisskey = res.filter(x => x.prerelease === true);
|
||||
else releasesMisskey = res.filter(x => x.prerelease === false);
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) updateAvailable = true;
|
||||
});
|
||||
|
||||
|
|
|
@ -7,64 +7,66 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<MkStickyContainer>
|
||||
<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
||||
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
|
||||
<div class="_gaps_m">
|
||||
<div class="_panel" style="padding: 16px;">
|
||||
<MkSwitch v-model="enableReceivePrerelease">
|
||||
<template #label>{{ i18n.ts.enableReceivePrerelease }}</template>
|
||||
</MkSwitch>
|
||||
<FormSuspense :p="init">
|
||||
<div class="_gaps_m">
|
||||
<div class="_panel" style="padding: 16px;">
|
||||
<MkSwitch v-model="enableReceivePrerelease">
|
||||
<template #label>{{ i18n.ts.enableReceivePrerelease }}</template>
|
||||
</MkSwitch>
|
||||
</div>
|
||||
|
||||
<template>
|
||||
<FormInfo v-if="version > releasesCherryPick[0].tag_name">{{ i18n.ts.youAreRunningBetaClient }}</FormInfo>
|
||||
<FormInfo v-else-if="version === releasesCherryPick[0].tag_name">{{ i18n.ts.youAreRunningUpToDateClient }}</FormInfo>
|
||||
<FormInfo v-else warn>{{ i18n.ts.newVersionOfClientAvailable }}</FormInfo>
|
||||
</template>
|
||||
|
||||
<FormSection first>
|
||||
<template #label>{{ instanceName }}</template>
|
||||
<MkKeyValue @click="whatIsNewCherryPick">
|
||||
<template #key>{{ i18n.ts.currentVersion }} <i class="ti ti-external-link"></i></template>
|
||||
<template #value>{{ version }}</template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue v-if="version < releasesCherryPick[0].tag_name" style="margin-top: 10px;" @click="whatIsNewLatestCherryPick">
|
||||
<template #key>{{ i18n.ts.latestVersion }} <i class="ti ti-external-link"></i></template>
|
||||
<template v-if="releasesCherryPick" #value>{{ releasesCherryPick[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
|
||||
<FormSection @click="whatIsNewLatestCherryPick">
|
||||
<template #label>CherryPick <i class="ti ti-external-link"></i></template>
|
||||
<MkKeyValue>
|
||||
<template #key>{{ i18n.ts.latestVersion }}</template>
|
||||
<template v-if="releasesCherryPick" #value>{{ releasesCherryPick[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue style="margin: 8px 0 0; color: var(--fgTransparentWeak); font-size: 0.85em;">
|
||||
<template v-if="releasesCherryPick" #value><MkTime :time="releasesCherryPick[0].published_at" mode="detail"/></template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
|
||||
<FormSection @click="whatIsNewLatestMisskey">
|
||||
<template #label>Misskey <i class="ti ti-external-link"></i></template>
|
||||
<MkKeyValue>
|
||||
<template #key>{{ i18n.ts.latestVersion }}</template>
|
||||
<template v-if="releasesMisskey" #value>{{ releasesMisskey[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue style="margin: 8px 0 0; color: var(--fgTransparentWeak); font-size: 0.85em;">
|
||||
<template v-if="releasesMisskey" #value><MkTime :time="releasesMisskey[0].published_at" mode="detail"/></template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
</div>
|
||||
|
||||
<template>
|
||||
<FormInfo v-if="version > releasesCherryPick[0].tag_name">{{ i18n.ts.youAreRunningBetaClient }}</FormInfo>
|
||||
<FormInfo v-else-if="version === releasesCherryPick[0].tag_name">{{ i18n.ts.youAreRunningUpToDateClient }}</FormInfo>
|
||||
<FormInfo v-else warn>{{ i18n.ts.newVersionOfClientAvailable }}</FormInfo>
|
||||
</template>
|
||||
|
||||
<FormSection first>
|
||||
<template #label>{{ instanceName }}</template>
|
||||
<MkKeyValue @click="whatIsNewCherryPick">
|
||||
<template #key>{{ i18n.ts.currentVersion }} <i class="ti ti-external-link"></i></template>
|
||||
<template #value>{{ version }}</template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue v-if="version < releasesCherryPick[0].tag_name" style="margin-top: 10px;" @click="whatIsNewLatestCherryPick">
|
||||
<template #key>{{ i18n.ts.latestVersion }} <i class="ti ti-external-link"></i></template>
|
||||
<template v-if="releasesCherryPick" #value>{{ releasesCherryPick[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
|
||||
<FormSection @click="whatIsNewLatestCherryPick">
|
||||
<template #label>CherryPick <i class="ti ti-external-link"></i></template>
|
||||
<MkKeyValue>
|
||||
<template #key>{{ i18n.ts.latestVersion }}</template>
|
||||
<template v-if="releasesCherryPick" #value>{{ releasesCherryPick[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue style="margin: 8px 0 0; color: var(--fgTransparentWeak); font-size: 0.85em;">
|
||||
<template v-if="releasesCherryPick" #value><MkTime :time="releasesCherryPick[0].published_at" mode="detail"/></template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
|
||||
<FormSection @click="whatIsNewLatestMisskey">
|
||||
<template #label>Misskey <i class="ti ti-external-link"></i></template>
|
||||
<MkKeyValue>
|
||||
<template #key>{{ i18n.ts.latestVersion }}</template>
|
||||
<template v-if="releasesMisskey" #value>{{ releasesMisskey[0].tag_name }}</template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
<MkKeyValue style="margin: 8px 0 0; color: var(--fgTransparentWeak); font-size: 0.85em;">
|
||||
<template v-if="releasesMisskey" #value><MkTime :time="releasesMisskey[0].published_at" mode="detail"/></template>
|
||||
<template v-else #value><MkEllipsis/></template>
|
||||
</MkKeyValue>
|
||||
</FormSection>
|
||||
</div>
|
||||
</FormSuspense>
|
||||
</MkSpacer>
|
||||
</MkStickyContainer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, watch } from 'vue';
|
||||
import { onMounted } from 'vue';
|
||||
import * as os from '@/os.js';
|
||||
import FormInfo from '@/components/MkInfo.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
|
@ -75,14 +77,16 @@ import { i18n } from '@/i18n.js';
|
|||
import XHeader from '@/pages/admin/_header_.vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
import { fetchInstance } from '@/instance.js';
|
||||
import FormSuspense from '@/components/form/suspense.vue';
|
||||
|
||||
let enableReceivePrerelease: boolean = $ref(false);
|
||||
|
||||
let releasesCherryPick = $ref(null);
|
||||
let releasesMisskey = $ref(null);
|
||||
let releasesCherryPick = $ref();
|
||||
let releasesMisskey = $ref();
|
||||
|
||||
const meta = await os.api('admin/meta');
|
||||
|
||||
async function init() {
|
||||
const meta = await os.api('admin/meta');
|
||||
enableReceivePrerelease = meta.enableReceivePrerelease;
|
||||
}
|
||||
|
||||
|
@ -94,20 +98,12 @@ function save() {
|
|||
});
|
||||
}
|
||||
|
||||
watch([
|
||||
enableReceivePrerelease,
|
||||
], () => {
|
||||
save();
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
init();
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
if (enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
});
|
||||
|
||||
|
@ -115,7 +111,7 @@ onMounted(() => {
|
|||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
if (enableReceivePrerelease) releasesMisskey = res.filter(x => x.prerelease === true);
|
||||
if (meta.enableReceivePrerelease) releasesMisskey = res.filter(x => x.prerelease === true);
|
||||
else releasesMisskey = res.filter(x => x.prerelease === false);
|
||||
});
|
||||
});
|
||||
|
@ -136,7 +132,12 @@ const whatIsNewLatestMisskey = () => {
|
|||
window.open(`https://misskey-hub.net/docs/releases.html#_${releasesMisskey[0].tag_name.replace(/\./g, '-')}`, '_blank');
|
||||
};
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = $computed(() => [{
|
||||
asFullButton: true,
|
||||
icon: 'ti ti-check',
|
||||
text: i18n.ts.save,
|
||||
handler: save,
|
||||
}]);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
|
||||
|
|
|
@ -70,21 +70,25 @@ const otherMenuItemIndicated = computed(() => {
|
|||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
releasesCherryPick = res;
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
function openAccountMenu(ev: MouseEvent) {
|
||||
openAccountMenu_({
|
||||
withExtraOperation: true,
|
||||
|
|
|
@ -84,21 +84,25 @@ const otherMenuItemIndicated = computed(() => {
|
|||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
releasesCherryPick = res;
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
const calcViewState = () => {
|
||||
iconOnly.value = (window.innerWidth <= 1279) || (defaultStore.state.menuDisplay === 'sideIcon');
|
||||
};
|
||||
|
|
|
@ -23,6 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<div class="divider"></div>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime v-tooltip="i18n.ts.controlPanel" class="item" activeClass="active" to="/admin" :behavior="settingsWindowed ? 'window' : null">
|
||||
<i class="ti ti-dashboard ti-fw"></i>
|
||||
<span v-if="controlPanelIndicated" class="indicator"><i class="_indicatorCircle"></i></span>
|
||||
</MkA>
|
||||
<button v-click-anime v-vibrate="5" class="item _button" @click="more">
|
||||
<i class="ti ti-dots ti-fw"></i>
|
||||
|
@ -56,6 +57,7 @@ import MkButton from '@/components/MkButton.vue';
|
|||
import { defaultStore } from '@/store.js';
|
||||
import { instance } from '@/instance.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { version } from '@/config.js';
|
||||
|
||||
const WINDOW_THRESHOLD = 1400;
|
||||
|
||||
|
@ -70,6 +72,28 @@ let otherNavItemIndicated = computed<boolean>(() => {
|
|||
return false;
|
||||
});
|
||||
|
||||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
function more(ev: MouseEvent) {
|
||||
os.popup(defineAsyncComponent(() => import('@/components/MkLaunchPad.vue')), {
|
||||
src: ev.currentTarget ?? ev.target,
|
||||
|
|
|
@ -81,21 +81,25 @@ let settingsWindowed = $ref(false);
|
|||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
releasesCherryPick = res;
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
function calcViewState() {
|
||||
iconOnly = (window.innerWidth <= WINDOW_THRESHOLD) || (menuDisplay.value === 'sideIcon');
|
||||
settingsWindowed = (window.innerWidth > WINDOW_THRESHOLD);
|
||||
|
|
|
@ -74,21 +74,25 @@ const otherMenuItemIndicated = computed(() => {
|
|||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
releasesCherryPick = res;
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
function openAccountMenu(ev: MouseEvent) {
|
||||
openAccountMenu_({
|
||||
withExtraOperation: true,
|
||||
|
|
|
@ -91,21 +91,25 @@ const otherMenuItemIndicated = computed(() => {
|
|||
let controlPanelIndicated = $ref(false);
|
||||
let releasesCherryPick = $ref(null);
|
||||
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(res => {
|
||||
releasesCherryPick = res;
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
if ($i.isAdmin || $i.isModerator) {
|
||||
os.api('admin/abuse-user-reports', {
|
||||
state: 'unresolved',
|
||||
limit: 1,
|
||||
}).then(reports => {
|
||||
if (reports.length > 0) controlPanelIndicated = true;
|
||||
});
|
||||
|
||||
fetch('https://api.github.com/repos/kokonect-link/cherrypick/releases', {
|
||||
method: 'GET',
|
||||
}).then(res => res.json())
|
||||
.then(async res => {
|
||||
const meta = await os.api('admin/meta');
|
||||
if (meta.enableReceivePrerelease) releasesCherryPick = res.filter(x => x.prerelease === true);
|
||||
else releasesCherryPick = res.filter(x => x.prerelease === false);
|
||||
if (version < releasesCherryPick[0].tag_name) controlPanelIndicated = true;
|
||||
});
|
||||
}
|
||||
|
||||
const calcViewState = () => {
|
||||
iconOnly.value = (window.innerWidth <= 1279) || (defaultStore.state.menuDisplay === 'sideIcon');
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue