feat(frontend): 長いテキストをペーストした際にテキストファイルとして添付するかどうかを選択できるように (#13862)
* feat(frontend): ask if attach as file if clipboard text is very long * docs(changelog): 長いテキストをペーストした際にテキストファイルとして添付するかどうかを選択できるように
This commit is contained in:
		
							parent
							
								
									ed432d06d7
								
							
						
					
					
						commit
						aafa669cf5
					
				
					 4 changed files with 24 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -42,6 +42,7 @@
 | 
			
		|||
- Enhance: `Ui:C:postForm` および `Ui:C:postFormButton` に `localOnly` と `visibility` を設定できるように
 | 
			
		||||
- Enhance: AiScriptを0.18.0にバージョンアップ
 | 
			
		||||
- Enhance: 通常のノートでも、お気に入りに登録したチャンネルにリノートできるように
 | 
			
		||||
- Enhance: 長いテキストをペーストした際にテキストファイルとして添付するかどうかを選択できるように
 | 
			
		||||
- Fix: 一部のページ内リンクが正しく動作しない問題を修正
 | 
			
		||||
- Fix: 周年の実績が閏年を考慮しない問題を修正
 | 
			
		||||
- Fix: ローカルURLのプレビューポップアップが左上に表示される
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -917,7 +917,7 @@ export interface Locale extends ILocale {
 | 
			
		|||
     */
 | 
			
		||||
    "silencedInstances": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * サイレンスしたいサーバーのホストを改行で区切って設定します。サイレンスされたサーバーに所属するアカウントはすべて「サイレンス」として扱われ、フォローがすべてリクエストになり、フォロワーでないローカルアカウントにはメンションできなくなります。ブロックしたインスタンスには影響しません。
 | 
			
		||||
     * サイレンスしたいサーバーのホストを改行で区切って設定します。サイレンスされたサーバーに所属するアカウントはすべて「サイレンス」として扱われ、フォローがすべてリクエストになります。ブロックしたインスタンスには影響しません。
 | 
			
		||||
     */
 | 
			
		||||
    "silencedInstancesDescription": string;
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -1900,6 +1900,10 @@ export interface Locale extends ILocale {
 | 
			
		|||
     * 引用として添付しますか?
 | 
			
		||||
     */
 | 
			
		||||
    "quoteQuestion": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * クリップボードのテキストが長いです。テキストファイルとして添付しますか?
 | 
			
		||||
     */
 | 
			
		||||
    "attachAsFileQuestion": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * まだチャットはありません
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -471,6 +471,7 @@ retype: "再入力"
 | 
			
		|||
noteOf: "{user}のノート"
 | 
			
		||||
quoteAttached: "引用付き"
 | 
			
		||||
quoteQuestion: "引用として添付しますか?"
 | 
			
		||||
attachAsFileQuestion: "クリップボードのテキストが長いです。テキストファイルとして添付しますか?"
 | 
			
		||||
noMessagesYet: "まだチャットはありません"
 | 
			
		||||
newMessageExists: "新しいメッセージがあります"
 | 
			
		||||
onlyOneFileCanBeAttached: "メッセージに添付できるファイルはひとつです"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -612,6 +612,23 @@ async function onPaste(ev: ClipboardEvent) {
 | 
			
		|||
			quoteId.value = paste.substring(url.length).match(/^\/notes\/(.+?)\/?$/)?.[1] ?? null;
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (paste.length > 1000) {
 | 
			
		||||
		ev.preventDefault();
 | 
			
		||||
		os.confirm({
 | 
			
		||||
			type: 'info',
 | 
			
		||||
			text: i18n.ts.attachAsFileQuestion,
 | 
			
		||||
		}).then(({ canceled }) => {
 | 
			
		||||
			if (canceled) {
 | 
			
		||||
				insertTextAtCursor(textareaEl.value, paste);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			const fileName = formatTimeString(new Date(), defaultStore.state.pastedFileName).replace(/{{number}}/g, "0");
 | 
			
		||||
			const file = new File([paste], `${fileName}.txt`, { type: "text/plain" });
 | 
			
		||||
			upload(file, `${fileName}.txt`);
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function onDragover(ev) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue