Moderation: Add keybinds for link copying and setting project status (#6716)

Add keybinds for link copying and setting project status
This commit is contained in:
coolbot
2026-07-14 10:21:40 +00:00
committed by GitHub
parent 13e6ebf4e0
commit cafe58dc3c
3 changed files with 66 additions and 0 deletions
@@ -1207,6 +1207,29 @@ function handleKeybinds(event: KeyboardEvent) {
tryWithhold: () => sendMessage('withheld'),
tryEditMessage: goBackToStages,
tryCopyLink: async (permalink: boolean, relative: boolean, page: boolean) => {
let url = ``
if (relative) {
url += `${globalThis.location.origin}`
} else {
url += `https://modrinth.com`
}
if (permalink) {
url += `/project/${projectV2.value.id}`
} else {
url += `/${projectV2.value.project_type}/${projectV2.value.slug}`
}
if (page) {
url += `/${globalThis.location.pathname.split('/').slice(3).join('/')}`
}
await navigator.clipboard.writeText(url)
},
tryCopyId: async () => await navigator.clipboard.writeText(projectV2.value.id),
tryToggleAction: (actionIndex: number) => {
const action = visibleActions.value[actionIndex]
if (action) {
+40
View File
@@ -34,6 +34,46 @@ const keybinds: { [id: string]: KeybindListener } = {
enabled: (ctx) => ctx.state.futureProjectCount > 0 && !ctx.state.isDone,
action: (ctx) => ctx.actions.trySkipProject(),
},
'copy-permalink': {
keybind: 'Ctrl+Alt+C',
description: 'Copy permalink',
action: (ctx) => ctx.actions.tryCopyLink(true, false, false),
},
'copy-relative-permalink': {
keybind: 'Ctrl+Alt+R',
description: 'Copy relative permalink',
action: (ctx) => ctx.actions.tryCopyLink(true, true, false),
},
'copy-page-permalink': {
keybind: 'Shift+Ctrl+Alt+C',
description: 'Copy permalink with page',
action: (ctx) => ctx.actions.tryCopyLink(true, false, true),
},
'copy-page-relative-permalink': {
keybind: 'Shift+Ctrl+Alt+R',
description: 'Copy relative permalink with page',
action: (ctx) => ctx.actions.tryCopyLink(true, true, true),
},
'copy-id': {
keybind: 'Ctrl+Alt+D',
description: 'Copy Project ID',
action: (ctx) => ctx.actions.tryCopyId(),
},
'approve-project': {
keybind: 'Shift+Alt+A',
description: 'Approve project',
action: (ctx) => ctx.actions.tryApprove(),
},
'withhold-project': {
keybind: 'Shift+Alt+W',
description: 'Withhold project',
action: (ctx) => ctx.actions.tryWithhold(),
},
'reject-project': {
keybind: 'Shift+Alt+R',
description: 'Reject project',
action: (ctx) => ctx.actions.tryReject(),
},
}
export default keybinds
@@ -22,6 +22,9 @@ export interface ModerationActions {
tryFocusNextAction: () => void
tryFocusPreviousAction: () => void
tryActivateFocusedAction: () => void
tryCopyLink: (permalink: boolean, relative: boolean, page: boolean) => void
tryCopyId: () => void
}
export interface ModerationState {