Fix: navigator.share未サポートの場合は共有ボタンを非表示にする(+URLのコピーボタンを設置) (#12506)
* navigator.share未サポートの場合は共有ボタンを非表示にする * fix CHANGELOG.md * ライセンス表示追加 * URLのコピーボタンを設置
This commit is contained in:
		| @@ -86,6 +86,9 @@ import { defaultStore } from '@/store.js'; | ||||
| import MkNote from '@/components/MkNote.vue'; | ||||
| import MkInfo from '@/components/MkInfo.vue'; | ||||
| import MkFoldableSection from '@/components/MkFoldableSection.vue'; | ||||
| import { PageHeaderItem } from '@/types/page-header.js'; | ||||
| import { isSupportShare } from '@/scripts/navigator.js'; | ||||
| import copyToClipboard from '@/scripts/copy-to-clipboard.js'; | ||||
|  | ||||
| const router = useRouter(); | ||||
|  | ||||
| @@ -167,24 +170,40 @@ async function search() { | ||||
|  | ||||
| const headerActions = $computed(() => { | ||||
| 	if (channel && channel.userId) { | ||||
| 		const share = { | ||||
| 			icon: 'ti ti-share', | ||||
| 			text: i18n.ts.share, | ||||
| 			handler: async (): Promise<void> => { | ||||
| 				navigator.share({ | ||||
| 					title: channel.name, | ||||
| 					text: channel.description, | ||||
| 					url: `${url}/channels/${channel.id}`, | ||||
| 				}); | ||||
| 			}, | ||||
| 		}; | ||||
| 		const headerItems: PageHeaderItem[] = []; | ||||
|  | ||||
| 		const canEdit = ($i && $i.id === channel.userId) || iAmModerator; | ||||
| 		return canEdit ? [share, { | ||||
| 			icon: 'ti ti-settings', | ||||
| 			text: i18n.ts.edit, | ||||
| 			handler: edit, | ||||
| 		}] : [share]; | ||||
| 		headerItems.push({ | ||||
| 			icon: 'ti ti-link', | ||||
| 			text: i18n.ts.copyUrl, | ||||
| 			handler: async (): Promise<void> => { | ||||
| 				copyToClipboard(`${url}/channels/${channel.id}`); | ||||
| 				os.success(); | ||||
| 			}, | ||||
| 		}); | ||||
|  | ||||
| 		if (isSupportShare()) { | ||||
| 			headerItems.push({ | ||||
| 				icon: 'ti ti-share', | ||||
| 				text: i18n.ts.share, | ||||
| 				handler: async (): Promise<void> => { | ||||
| 					navigator.share({ | ||||
| 						title: channel.name, | ||||
| 						text: channel.description, | ||||
| 						url: `${url}/channels/${channel.id}`, | ||||
| 					}); | ||||
| 				}, | ||||
| 			}); | ||||
| 		} | ||||
|  | ||||
| 		if (($i && $i.id === channel.userId) || iAmModerator) { | ||||
| 			headerItems.push({ | ||||
| 				icon: 'ti ti-settings', | ||||
| 				text: i18n.ts.edit, | ||||
| 				handler: edit, | ||||
| 			}); | ||||
| 		} | ||||
|  | ||||
| 		return headerItems.length > 0 ? headerItems : null; | ||||
| 	} else { | ||||
| 		return null; | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 おさむのひと
					おさむのひと