enhance(frontend): 自分のノートの添付ファイルから直接ファイルの詳細ページに飛べるようにする (#13520)
* enhance(frontend): 自分のノートの添付ファイルから直接ファイルの詳細ページに飛べるようにする * 他のファイルタイプにも対応 * Update Changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									45672a70f9
								
							
						
					
					
						commit
						08d618bb8b
					
				|  | @ -4,6 +4,7 @@ | |||
| - | ||||
| 
 | ||||
| ### Client | ||||
| - Enhance: 自分のノートの添付ファイルから直接ファイルの詳細ページに飛べるように | ||||
| - Fix: 一部のページ内リンクが正しく動作しない問題を修正 | ||||
| 
 | ||||
| ### Server | ||||
|  |  | |||
|  | @ -248,7 +248,7 @@ export class DriveFileEntityService { | |||
| 			folder: opts.detail && file.folderId ? this.driveFolderEntityService.pack(file.folderId, { | ||||
| 				detail: true, | ||||
| 			}) : null, | ||||
| 			userId: opts.withUser ? file.userId : null, | ||||
| 			userId: file.userId, | ||||
| 			user: (opts.withUser && file.userId) ? this.userEntityService.pack(file.userId) : null, | ||||
| 		}); | ||||
| 	} | ||||
|  |  | |||
|  | @ -66,7 +66,7 @@ import * as os from '@/os.js'; | |||
| import bytes from '@/filters/bytes.js'; | ||||
| import { hms } from '@/filters/hms.js'; | ||||
| import MkMediaRange from '@/components/MkMediaRange.vue'; | ||||
| import { iAmModerator } from '@/account.js'; | ||||
| import { $i, iAmModerator } from '@/account.js'; | ||||
| 
 | ||||
| const props = defineProps<{ | ||||
| 	audio: Misskey.entities.DriveFile; | ||||
|  | @ -96,8 +96,6 @@ function showMenu(ev: MouseEvent) { | |||
| 
 | ||||
| 	if (iAmModerator) { | ||||
| 		menu.push({ | ||||
| 			type: 'divider', | ||||
| 		}, { | ||||
| 			text: props.audio.isSensitive ? i18n.ts.unmarkAsSensitive : i18n.ts.markAsSensitive, | ||||
| 			icon: props.audio.isSensitive ? 'ti ti-eye' : 'ti ti-eye-exclamation', | ||||
| 			danger: true, | ||||
|  | @ -105,6 +103,17 @@ function showMenu(ev: MouseEvent) { | |||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	if ($i?.id === props.audio.userId) { | ||||
| 		menu.push({ | ||||
| 			type: 'divider', | ||||
| 		}, { | ||||
| 			type: 'link' as const, | ||||
| 			text: i18n.ts._fileViewer.title, | ||||
| 			icon: 'ti ti-info-circle', | ||||
| 			to: `/my/drive/file/${props.audio.id}`, | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	menuShowing.value = true; | ||||
| 	os.popupMenu(menu, ev.currentTarget ?? ev.target, { | ||||
| 		align: 'right', | ||||
|  |  | |||
|  | @ -59,7 +59,7 @@ import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue'; | |||
| import { defaultStore } from '@/store.js'; | ||||
| import { i18n } from '@/i18n.js'; | ||||
| import * as os from '@/os.js'; | ||||
| import { iAmModerator } from '@/account.js'; | ||||
| import { $i, iAmModerator } from '@/account.js'; | ||||
| 
 | ||||
| const props = withDefaults(defineProps<{ | ||||
| 	image: Misskey.entities.DriveFile; | ||||
|  | @ -114,6 +114,13 @@ function showMenu(ev: MouseEvent) { | |||
| 		action: () => { | ||||
| 			os.apiWithDialog('drive/files/update', { fileId: props.image.id, isSensitive: true }); | ||||
| 		}, | ||||
| 	}] : []), ...($i?.id === props.image.userId ? [{ | ||||
| 		type: 'divider' as const, | ||||
| 	}, { | ||||
| 		type: 'link' as const, | ||||
| 		text: i18n.ts._fileViewer.title, | ||||
| 		icon: 'ti ti-info-circle', | ||||
| 		to: `/my/drive/file/${props.image.id}`, | ||||
| 	}] : [])], ev.currentTarget ?? ev.target); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -94,7 +94,7 @@ import * as os from '@/os.js'; | |||
| import { isFullscreenNotSupported } from '@/scripts/device-kind.js'; | ||||
| import hasAudio from '@/scripts/media-has-audio.js'; | ||||
| import MkMediaRange from '@/components/MkMediaRange.vue'; | ||||
| import { iAmModerator } from '@/account.js'; | ||||
| import { $i, iAmModerator } from '@/account.js'; | ||||
| 
 | ||||
| const props = defineProps<{ | ||||
| 	video: Misskey.entities.DriveFile; | ||||
|  | @ -122,8 +122,6 @@ function showMenu(ev: MouseEvent) { | |||
| 
 | ||||
| 	if (iAmModerator) { | ||||
| 		menu.push({ | ||||
| 			type: 'divider', | ||||
| 		}, { | ||||
| 			text: props.video.isSensitive ? i18n.ts.unmarkAsSensitive : i18n.ts.markAsSensitive, | ||||
| 			icon: props.video.isSensitive ? 'ti ti-eye' : 'ti ti-eye-exclamation', | ||||
| 			danger: true, | ||||
|  | @ -131,6 +129,17 @@ function showMenu(ev: MouseEvent) { | |||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	if ($i?.id === props.video.userId) { | ||||
| 		menu.push({ | ||||
| 			type: 'divider', | ||||
| 		}, { | ||||
| 			type: 'link' as const, | ||||
| 			text: i18n.ts._fileViewer.title, | ||||
| 			icon: 'ti ti-info-circle', | ||||
| 			to: `/my/drive/file/${props.video.id}`, | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	menuShowing.value = true; | ||||
| 	os.popupMenu(menu, ev.currentTarget ?? ev.target, { | ||||
| 		align: 'right', | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue