enhance(frontend): チャンネルノートのピン留めをノートメニューからできるように (#12887)
* enhance(frontend): チャンネルノートのピン留めをノートメニューからできるように * Update Changelog
This commit is contained in:
parent
58469c0a69
commit
a9127e3ecd
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
### Client
|
### Client
|
||||||
- Enhance: ハッシュタグ入力時に、本文の末尾の行に何も書かれていない場合は新たにスペースを追加しないように
|
- Enhance: ハッシュタグ入力時に、本文の末尾の行に何も書かれていない場合は新たにスペースを追加しないように
|
||||||
|
- Enhance: チャンネルノートのピン留めをノートのメニューからできるように
|
||||||
|
|
||||||
## 2023.12.2
|
## 2023.12.2
|
||||||
|
|
||||||
|
@ -351,6 +351,7 @@ export class NoteEntityService implements OnModuleInit {
|
|||||||
color: channel.color,
|
color: channel.color,
|
||||||
isSensitive: channel.isSensitive,
|
isSensitive: channel.isSensitive,
|
||||||
allowRenoteToExternal: channel.allowRenoteToExternal,
|
allowRenoteToExternal: channel.allowRenoteToExternal,
|
||||||
|
userId: channel.userId,
|
||||||
} : undefined,
|
} : undefined,
|
||||||
mentions: note.mentions.length > 0 ? note.mentions : undefined,
|
mentions: note.mentions.length > 0 ? note.mentions : undefined,
|
||||||
uri: note.uri ?? undefined,
|
uri: note.uri ?? undefined,
|
||||||
|
@ -148,6 +148,10 @@ export const packedNoteSchema = {
|
|||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
},
|
},
|
||||||
|
userId: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
localOnly: {
|
localOnly: {
|
||||||
|
@ -352,6 +352,42 @@ export function getNoteMenu(props: {
|
|||||||
]
|
]
|
||||||
: []
|
: []
|
||||||
),
|
),
|
||||||
|
...(appearNote.channel && (appearNote.channel.userId === $i.id || $i.isModerator || $i.isAdmin) ? [
|
||||||
|
{ type: 'divider' },
|
||||||
|
{
|
||||||
|
type: 'parent' as const,
|
||||||
|
icon: 'ti ti-device-tv',
|
||||||
|
text: i18n.ts.channel,
|
||||||
|
children: async () => {
|
||||||
|
const channelChildMenu = [] as MenuItem[];
|
||||||
|
|
||||||
|
const channel = await os.api('channels/show', { channelId: appearNote.channel!.id });
|
||||||
|
|
||||||
|
if (channel.pinnedNoteIds.includes(appearNote.id)) {
|
||||||
|
channelChildMenu.push({
|
||||||
|
icon: 'ti ti-pinned-off',
|
||||||
|
text: i18n.ts.unpin,
|
||||||
|
action: () => os.apiWithDialog('channels/update', {
|
||||||
|
channelId: appearNote.channel!.id,
|
||||||
|
pinnedNoteIds: channel.pinnedNoteIds.filter(id => id !== appearNote.id),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
channelChildMenu.push({
|
||||||
|
icon: 'ti ti-pin',
|
||||||
|
text: i18n.ts.pin,
|
||||||
|
action: () => os.apiWithDialog('channels/update', {
|
||||||
|
channelId: appearNote.channel!.id,
|
||||||
|
pinnedNoteIds: [...channel.pinnedNoteIds, appearNote.id],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return channelChildMenu;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []
|
||||||
|
),
|
||||||
...(appearNote.userId === $i.id || $i.isModerator || $i.isAdmin ? [
|
...(appearNote.userId === $i.id || $i.isModerator || $i.isAdmin ? [
|
||||||
{ type: 'divider' },
|
{ type: 'divider' },
|
||||||
appearNote.userId === $i.id ? {
|
appearNote.userId === $i.id ? {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* version: 2023.12.0
|
* version: 2023.12.2
|
||||||
* generatedAt: 2023-12-26T23:35:09.494Z
|
* generatedAt: 2024-01-02T08:53:57.449Z
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { SwitchCaseResponseType } from '../api.js';
|
import type { SwitchCaseResponseType } from '../api.js';
|
||||||
@ -33,7 +33,6 @@ declare module '../api.js' {
|
|||||||
/**
|
/**
|
||||||
* No description provided.
|
* No description provided.
|
||||||
*
|
*
|
||||||
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
|
|
||||||
* **Credential required**: *No*
|
* **Credential required**: *No*
|
||||||
*/
|
*/
|
||||||
request<E extends 'admin/accounts/create', P extends Endpoints[E]['req']>(
|
request<E extends 'admin/accounts/create', P extends Endpoints[E]['req']>(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* version: 2023.12.0
|
* version: 2023.12.2
|
||||||
* generatedAt: 2023-12-26T23:35:09.491Z
|
* generatedAt: 2024-01-02T08:53:57.445Z
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* version: 2023.12.0
|
* version: 2023.12.2
|
||||||
* generatedAt: 2023-12-26T23:35:09.489Z
|
* generatedAt: 2024-01-02T08:53:57.443Z
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { operations } from './types.js';
|
import { operations } from './types.js';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* version: 2023.12.0
|
* version: 2023.12.2
|
||||||
* generatedAt: 2023-12-26T23:35:09.485Z
|
* generatedAt: 2024-01-02T08:53:57.441Z
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { components } from './types.js';
|
import { components } from './types.js';
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
/* eslint @typescript-eslint/no-explicit-any: 0 */
|
/* eslint @typescript-eslint/no-explicit-any: 0 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* version: 2023.12.0
|
* version: 2023.12.2
|
||||||
* generatedAt: 2023-12-26T23:35:09.389Z
|
* generatedAt: 2024-01-02T08:53:56.447Z
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,7 +40,6 @@ export type paths = {
|
|||||||
* admin/accounts/create
|
* admin/accounts/create
|
||||||
* @description No description provided.
|
* @description No description provided.
|
||||||
*
|
*
|
||||||
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
|
|
||||||
* **Credential required**: *No*
|
* **Credential required**: *No*
|
||||||
*/
|
*/
|
||||||
post: operations['admin/accounts/create'];
|
post: operations['admin/accounts/create'];
|
||||||
@ -3788,13 +3787,14 @@ export type components = {
|
|||||||
* @example xxxxxxxxxx
|
* @example xxxxxxxxxx
|
||||||
*/
|
*/
|
||||||
channelId?: string | null;
|
channelId?: string | null;
|
||||||
channel?: {
|
channel?: ({
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
color: string;
|
color: string;
|
||||||
isSensitive: boolean;
|
isSensitive: boolean;
|
||||||
allowRenoteToExternal: boolean;
|
allowRenoteToExternal: boolean;
|
||||||
} | null;
|
userId: string | null;
|
||||||
|
}) | null;
|
||||||
localOnly?: boolean;
|
localOnly?: boolean;
|
||||||
reactionAcceptance: string | null;
|
reactionAcceptance: string | null;
|
||||||
reactions: Record<string, never>;
|
reactions: Record<string, never>;
|
||||||
@ -4456,6 +4456,9 @@ export type operations = {
|
|||||||
enableActiveEmailValidation: boolean;
|
enableActiveEmailValidation: boolean;
|
||||||
enableVerifymailApi: boolean;
|
enableVerifymailApi: boolean;
|
||||||
verifymailAuthKey: string | null;
|
verifymailAuthKey: string | null;
|
||||||
|
enableTruemailApi: boolean;
|
||||||
|
truemailInstance: string | null;
|
||||||
|
truemailAuthKey: string | null;
|
||||||
enableChartsForRemoteUser: boolean;
|
enableChartsForRemoteUser: boolean;
|
||||||
enableChartsForFederatedInstances: boolean;
|
enableChartsForFederatedInstances: boolean;
|
||||||
enableServerMachineStats: boolean;
|
enableServerMachineStats: boolean;
|
||||||
@ -4620,7 +4623,6 @@ export type operations = {
|
|||||||
* admin/accounts/create
|
* admin/accounts/create
|
||||||
* @description No description provided.
|
* @description No description provided.
|
||||||
*
|
*
|
||||||
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
|
|
||||||
* **Credential required**: *No*
|
* **Credential required**: *No*
|
||||||
*/
|
*/
|
||||||
'admin/accounts/create': {
|
'admin/accounts/create': {
|
||||||
@ -8247,6 +8249,9 @@ export type operations = {
|
|||||||
enableActiveEmailValidation?: boolean;
|
enableActiveEmailValidation?: boolean;
|
||||||
enableVerifymailApi?: boolean;
|
enableVerifymailApi?: boolean;
|
||||||
verifymailAuthKey?: string | null;
|
verifymailAuthKey?: string | null;
|
||||||
|
enableTruemailApi?: boolean;
|
||||||
|
truemailInstance?: string | null;
|
||||||
|
truemailAuthKey?: string | null;
|
||||||
enableChartsForRemoteUser?: boolean;
|
enableChartsForRemoteUser?: boolean;
|
||||||
enableChartsForFederatedInstances?: boolean;
|
enableChartsForFederatedInstances?: boolean;
|
||||||
enableServerMachineStats?: boolean;
|
enableServerMachineStats?: boolean;
|
||||||
|
Loading…
Reference in New Issue
Block a user