Merge branch 'develop' into pr/16475
This commit is contained in:
commit
6c36a7f186
|
@ -31,6 +31,7 @@ import { FanoutTimelineService } from '@/core/FanoutTimelineService.js';
|
||||||
import { NotificationService } from '@/core/NotificationService.js';
|
import { NotificationService } from '@/core/NotificationService.js';
|
||||||
import type { OnApplicationShutdown, OnModuleInit } from '@nestjs/common';
|
import type { OnApplicationShutdown, OnModuleInit } from '@nestjs/common';
|
||||||
|
|
||||||
|
// misskey-js の rolePolicies と同期すべし
|
||||||
export type RolePolicies = {
|
export type RolePolicies = {
|
||||||
gtlAvailable: boolean;
|
gtlAvailable: boolean;
|
||||||
ltlAvailable: boolean;
|
ltlAvailable: boolean;
|
||||||
|
|
|
@ -10,6 +10,7 @@ import { MiAccessToken } from './AccessToken.js';
|
||||||
import { MiRole } from './Role.js';
|
import { MiRole } from './Role.js';
|
||||||
import { MiDriveFile } from './DriveFile.js';
|
import { MiDriveFile } from './DriveFile.js';
|
||||||
|
|
||||||
|
// misskey-js の notificationTypes と同期すべし
|
||||||
export type MiNotification = {
|
export type MiNotification = {
|
||||||
type: 'note';
|
type: 'note';
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
@ -54,68 +54,6 @@ https://github.com/sindresorhus/file-type/blob/main/core.js
|
||||||
https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers
|
https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const notificationTypes = [
|
|
||||||
'note',
|
|
||||||
'follow',
|
|
||||||
'mention',
|
|
||||||
'reply',
|
|
||||||
'renote',
|
|
||||||
'quote',
|
|
||||||
'reaction',
|
|
||||||
'pollEnded',
|
|
||||||
'receiveFollowRequest',
|
|
||||||
'followRequestAccepted',
|
|
||||||
'roleAssigned',
|
|
||||||
'chatRoomInvitationReceived',
|
|
||||||
'achievementEarned',
|
|
||||||
'exportCompleted',
|
|
||||||
'login',
|
|
||||||
'createToken',
|
|
||||||
'test',
|
|
||||||
'app',
|
|
||||||
] as const;
|
|
||||||
export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const;
|
|
||||||
|
|
||||||
export const ROLE_POLICIES = [
|
|
||||||
'gtlAvailable',
|
|
||||||
'ltlAvailable',
|
|
||||||
'canPublicNote',
|
|
||||||
'mentionLimit',
|
|
||||||
'canInvite',
|
|
||||||
'inviteLimit',
|
|
||||||
'inviteLimitCycle',
|
|
||||||
'inviteExpirationTime',
|
|
||||||
'canManageCustomEmojis',
|
|
||||||
'canManageAvatarDecorations',
|
|
||||||
'canSearchNotes',
|
|
||||||
'canSearchUsers',
|
|
||||||
'canUseTranslator',
|
|
||||||
'canHideAds',
|
|
||||||
'driveCapacityMb',
|
|
||||||
'maxFileSizeMb',
|
|
||||||
'alwaysMarkNsfw',
|
|
||||||
'canUpdateBioMedia',
|
|
||||||
'pinLimit',
|
|
||||||
'antennaLimit',
|
|
||||||
'wordMuteLimit',
|
|
||||||
'webhookLimit',
|
|
||||||
'clipLimit',
|
|
||||||
'noteEachClipsLimit',
|
|
||||||
'userListLimit',
|
|
||||||
'userEachUserListsLimit',
|
|
||||||
'rateLimitFactor',
|
|
||||||
'avatarDecorationLimit',
|
|
||||||
'canImportAntennas',
|
|
||||||
'canImportBlocking',
|
|
||||||
'canImportFollowing',
|
|
||||||
'canImportMuting',
|
|
||||||
'canImportUserLists',
|
|
||||||
'chatAvailability',
|
|
||||||
'uploadableFileTypes',
|
|
||||||
'noteDraftLimit',
|
|
||||||
'watermarkAvailable',
|
|
||||||
] as const;
|
|
||||||
|
|
||||||
export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'border', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime'];
|
export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'border', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime'];
|
||||||
export const MFM_PARAMS: Record<typeof MFM_TAGS[number], string[]> = {
|
export const MFM_PARAMS: Record<typeof MFM_TAGS[number], string[]> = {
|
||||||
tada: ['speed=', 'delay='],
|
tada: ['speed=', 'delay='],
|
||||||
|
|
|
@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, useTemplateRef } from 'vue';
|
import { ref, useTemplateRef } from 'vue';
|
||||||
import { notificationTypes } from '@@/js/const.js';
|
import { notificationTypes } from 'misskey-js';
|
||||||
import MkSwitch from './MkSwitch.vue';
|
import MkSwitch from './MkSwitch.vue';
|
||||||
import MkInfo from './MkInfo.vue';
|
import MkInfo from './MkInfo.vue';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
|
|
|
@ -191,7 +191,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import { ROLE_POLICIES } from '@@/js/const.js';
|
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
|
@ -44,10 +44,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onUnmounted, onMounted, computed, useTemplateRef, TransitionGroup, markRaw, watch } from 'vue';
|
import { onUnmounted, onMounted, computed, useTemplateRef, TransitionGroup, markRaw, watch } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
|
import { notificationTypes } from 'misskey-js';
|
||||||
import { useInterval } from '@@/js/use-interval.js';
|
import { useInterval } from '@@/js/use-interval.js';
|
||||||
import { useDocumentVisibility } from '@@/js/use-document-visibility.js';
|
import { useDocumentVisibility } from '@@/js/use-document-visibility.js';
|
||||||
import { getScrollContainer, scrollToTop } from '@@/js/scroll.js';
|
import { getScrollContainer, scrollToTop } from '@@/js/scroll.js';
|
||||||
import type { notificationTypes } from '@@/js/const.js';
|
|
||||||
import XNotification from '@/components/MkNotification.vue';
|
import XNotification from '@/components/MkNotification.vue';
|
||||||
import MkNote from '@/components/MkNote.vue';
|
import MkNote from '@/components/MkNote.vue';
|
||||||
import { useStream } from '@/stream.js';
|
import { useStream } from '@/stream.js';
|
||||||
|
|
|
@ -829,8 +829,9 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { watch, ref, computed } from 'vue';
|
import { watch, ref, computed } from 'vue';
|
||||||
import { throttle } from 'throttle-debounce';
|
import { throttle } from 'throttle-debounce';
|
||||||
import { ROLE_POLICIES } from '@@/js/const.js';
|
import * as Misskey from 'misskey-js';
|
||||||
import RolesEditorFormula from './RolesEditorFormula.vue';
|
import RolesEditorFormula from './RolesEditorFormula.vue';
|
||||||
|
import type { GetMkSelectValueTypesFromDef, MkSelectItem } from '@/components/MkSelect.vue';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkColorInput from '@/components/MkColorInput.vue';
|
import MkColorInput from '@/components/MkColorInput.vue';
|
||||||
import MkSelect from '@/components/MkSelect.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
|
@ -856,7 +857,7 @@ const props = defineProps<{
|
||||||
const role = ref(deepClone(props.modelValue));
|
const role = ref(deepClone(props.modelValue));
|
||||||
|
|
||||||
// fill missing policy
|
// fill missing policy
|
||||||
for (const ROLE_POLICY of ROLE_POLICIES) {
|
for (const ROLE_POLICY of Misskey.rolePolicies) {
|
||||||
if (role.value.policies[ROLE_POLICY] == null) {
|
if (role.value.policies[ROLE_POLICY] == null) {
|
||||||
role.value.policies[ROLE_POLICY] = {
|
role.value.policies[ROLE_POLICY] = {
|
||||||
useDefault: true,
|
useDefault: true,
|
||||||
|
|
|
@ -335,7 +335,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, reactive, ref } from 'vue';
|
import { computed, reactive, ref } from 'vue';
|
||||||
import { ROLE_POLICIES } from '@@/js/const.js';
|
import * as Misskey from 'misskey-js';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
|
@ -357,8 +357,8 @@ const baseRoleQ = ref('');
|
||||||
|
|
||||||
const roles = await misskeyApi('admin/roles/list');
|
const roles = await misskeyApi('admin/roles/list');
|
||||||
|
|
||||||
const policies = reactive<Record<typeof ROLE_POLICIES[number], any>>({});
|
const policies = reactive<Record<typeof Misskey.rolePolicies[number], any>>({});
|
||||||
for (const ROLE_POLICY of ROLE_POLICIES) {
|
for (const ROLE_POLICY of Misskey.rolePolicies) {
|
||||||
policies[ROLE_POLICY] = instance.policies[ROLE_POLICY];
|
policies[ROLE_POLICY] = instance.policies[ROLE_POLICY];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, markRaw, ref } from 'vue';
|
import { computed, markRaw, ref } from 'vue';
|
||||||
import { notificationTypes } from '@@/js/const.js';
|
import { notificationTypes } from 'misskey-js';
|
||||||
import MkStreamingNotificationsTimeline from '@/components/MkStreamingNotificationsTimeline.vue';
|
import MkStreamingNotificationsTimeline from '@/components/MkStreamingNotificationsTimeline.vue';
|
||||||
import MkNotesTimeline from '@/components/MkNotesTimeline.vue';
|
import MkNotesTimeline from '@/components/MkNotesTimeline.vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
|
@ -65,7 +65,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useTemplateRef, computed } from 'vue';
|
import { useTemplateRef, computed } from 'vue';
|
||||||
import { notificationTypes } from '@@/js/const.js';
|
import { notificationTypes } from 'misskey-js';
|
||||||
import XNotificationConfig from './notifications.notification-config.vue';
|
import XNotificationConfig from './notifications.notification-config.vue';
|
||||||
import type { NotificationConfig } from './notifications.notification-config.vue';
|
import type { NotificationConfig } from './notifications.notification-config.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
|
|
|
@ -17,8 +17,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent } from 'vue';
|
import { defineAsyncComponent } from 'vue';
|
||||||
import type { notificationTypes as notificationTypes_typeReferenceOnly } from '@@/js/const.js';
|
|
||||||
import { useWidgetPropsManager } from './widget.js';
|
import { useWidgetPropsManager } from './widget.js';
|
||||||
|
import type { notificationTypes as notificationTypes_typeReferenceOnly } from 'misskey-js';
|
||||||
import type { WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget.js';
|
import type { WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget.js';
|
||||||
import type { FormWithDefault, GetFormResultType } from '@/utility/form.js';
|
import type { FormWithDefault, GetFormResultType } from '@/utility/form.js';
|
||||||
import MkContainer from '@/components/MkContainer.vue';
|
import MkContainer from '@/components/MkContainer.vue';
|
||||||
|
|
|
@ -3210,7 +3210,7 @@ type Notification_2 = components['schemas']['Notification'];
|
||||||
type NotificationsCreateRequest = operations['notifications___create']['requestBody']['content']['application/json'];
|
type NotificationsCreateRequest = operations['notifications___create']['requestBody']['content']['application/json'];
|
||||||
|
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
export const notificationTypes: readonly ["note", "follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "pollEnded", "receiveFollowRequest", "followRequestAccepted", "groupInvited", "app", "roleAssigned", "chatRoomInvitationReceived", "achievementEarned"];
|
export const notificationTypes: readonly ["note", "follow", "mention", "reply", "renote", "quote", "reaction", "pollEnded", "receiveFollowRequest", "followRequestAccepted", "groupInvited", "app", "roleAssigned", "chatRoomInvitationReceived", "achievementEarned", "exportCompleted", "test", "login", "createToken"];
|
||||||
|
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
export function nyaize(text: string): string;
|
export function nyaize(text: string): string;
|
||||||
|
@ -3424,6 +3424,9 @@ type RoleLite = components['schemas']['RoleLite'];
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
type RolePolicies = components['schemas']['RolePolicies'];
|
type RolePolicies = components['schemas']['RolePolicies'];
|
||||||
|
|
||||||
|
// @public (undocumented)
|
||||||
|
export const rolePolicies: readonly ["gtlAvailable", "ltlAvailable", "canPublicNote", "mentionLimit", "canInvite", "inviteLimit", "inviteLimitCycle", "inviteExpirationTime", "canManageCustomEmojis", "canManageAvatarDecorations", "canSearchNotes", "canSearchUsers", "canUseTranslator", "canHideAds", "driveCapacityMb", "maxFileSizeMb", "alwaysMarkNsfw", "canUpdateBioMedia", "pinLimit", "antennaLimit", "wordMuteLimit", "webhookLimit", "clipLimit", "noteEachClipsLimit", "userListLimit", "userEachUserListsLimit", "rateLimitFactor", "avatarDecorationLimit", "canImportAntennas", "canImportBlocking", "canImportFollowing", "canImportMuting", "canImportUserLists", "chatAvailability", "uploadableFileTypes", "noteDraftLimit", "watermarkAvailable"];
|
||||||
|
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
type RolesListResponse = operations['roles___list']['responses']['200']['content']['application/json'];
|
type RolesListResponse = operations['roles___list']['responses']['200']['content']['application/json'];
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,27 @@ import type {
|
||||||
ChatRoom,
|
ChatRoom,
|
||||||
} from './autogen/models.js';
|
} from './autogen/models.js';
|
||||||
|
|
||||||
export const notificationTypes = ['note', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app', 'roleAssigned', 'chatRoomInvitationReceived', 'achievementEarned'] as const;
|
export const notificationTypes = [
|
||||||
|
'note',
|
||||||
|
'follow',
|
||||||
|
'mention',
|
||||||
|
'reply',
|
||||||
|
'renote',
|
||||||
|
'quote',
|
||||||
|
'reaction',
|
||||||
|
'pollEnded',
|
||||||
|
'receiveFollowRequest',
|
||||||
|
'followRequestAccepted',
|
||||||
|
'groupInvited',
|
||||||
|
'app',
|
||||||
|
'roleAssigned',
|
||||||
|
'chatRoomInvitationReceived',
|
||||||
|
'achievementEarned',
|
||||||
|
'exportCompleted',
|
||||||
|
'test',
|
||||||
|
'login',
|
||||||
|
'createToken',
|
||||||
|
] as const;
|
||||||
|
|
||||||
export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const;
|
export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const;
|
||||||
|
|
||||||
|
@ -170,6 +190,46 @@ export const moderationLogTypes = [
|
||||||
'updateProxyAccountDescription',
|
'updateProxyAccountDescription',
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
|
export const rolePolicies = [
|
||||||
|
'gtlAvailable',
|
||||||
|
'ltlAvailable',
|
||||||
|
'canPublicNote',
|
||||||
|
'mentionLimit',
|
||||||
|
'canInvite',
|
||||||
|
'inviteLimit',
|
||||||
|
'inviteLimitCycle',
|
||||||
|
'inviteExpirationTime',
|
||||||
|
'canManageCustomEmojis',
|
||||||
|
'canManageAvatarDecorations',
|
||||||
|
'canSearchNotes',
|
||||||
|
'canSearchUsers',
|
||||||
|
'canUseTranslator',
|
||||||
|
'canHideAds',
|
||||||
|
'driveCapacityMb',
|
||||||
|
'maxFileSizeMb',
|
||||||
|
'alwaysMarkNsfw',
|
||||||
|
'canUpdateBioMedia',
|
||||||
|
'pinLimit',
|
||||||
|
'antennaLimit',
|
||||||
|
'wordMuteLimit',
|
||||||
|
'webhookLimit',
|
||||||
|
'clipLimit',
|
||||||
|
'noteEachClipsLimit',
|
||||||
|
'userListLimit',
|
||||||
|
'userEachUserListsLimit',
|
||||||
|
'rateLimitFactor',
|
||||||
|
'avatarDecorationLimit',
|
||||||
|
'canImportAntennas',
|
||||||
|
'canImportBlocking',
|
||||||
|
'canImportFollowing',
|
||||||
|
'canImportMuting',
|
||||||
|
'canImportUserLists',
|
||||||
|
'chatAvailability',
|
||||||
|
'uploadableFileTypes',
|
||||||
|
'noteDraftLimit',
|
||||||
|
'watermarkAvailable',
|
||||||
|
] as const;
|
||||||
|
|
||||||
export const queueTypes = [
|
export const queueTypes = [
|
||||||
'system',
|
'system',
|
||||||
'endedPollNotification',
|
'endedPollNotification',
|
||||||
|
|
|
@ -13,6 +13,7 @@ export const mutedNoteReasons = consts.mutedNoteReasons;
|
||||||
export const followingVisibilities = consts.followingVisibilities;
|
export const followingVisibilities = consts.followingVisibilities;
|
||||||
export const followersVisibilities = consts.followersVisibilities;
|
export const followersVisibilities = consts.followersVisibilities;
|
||||||
export const moderationLogTypes = consts.moderationLogTypes;
|
export const moderationLogTypes = consts.moderationLogTypes;
|
||||||
|
export const rolePolicies = consts.rolePolicies;
|
||||||
export const queueTypes = consts.queueTypes;
|
export const queueTypes = consts.queueTypes;
|
||||||
export const reversiUpdateKeys = consts.reversiUpdateKeys;
|
export const reversiUpdateKeys = consts.reversiUpdateKeys;
|
||||||
|
|
||||||
|
|
|
@ -2276,6 +2276,7 @@ packages:
|
||||||
|
|
||||||
'@github/webauthn-json@2.1.1':
|
'@github/webauthn-json@2.1.1':
|
||||||
resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==}
|
resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==}
|
||||||
|
deprecated: 'Deprecated: Modern browsers support built-in WebAuthn JSON methods. Please use native browser methods instead. For more information, visit https://github.com/github/webauthn-json'
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@hapi/boom@10.0.1':
|
'@hapi/boom@10.0.1':
|
||||||
|
@ -3693,6 +3694,7 @@ packages:
|
||||||
|
|
||||||
'@simplewebauthn/types@12.0.0':
|
'@simplewebauthn/types@12.0.0':
|
||||||
resolution: {integrity: sha512-q6y8MkoV8V8jB4zzp18Uyj2I7oFp2/ONL8c3j8uT06AOWu3cIChc1au71QYHrP2b+xDapkGTiv+9lX7xkTlAsA==}
|
resolution: {integrity: sha512-q6y8MkoV8V8jB4zzp18Uyj2I7oFp2/ONL8c3j8uT06AOWu3cIChc1au71QYHrP2b+xDapkGTiv+9lX7xkTlAsA==}
|
||||||
|
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||||
|
|
||||||
'@sinclair/typebox@0.27.8':
|
'@sinclair/typebox@0.27.8':
|
||||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||||
|
|
Loading…
Reference in New Issue