mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-15 01:05:42 +02:00
* WIp (backend) * Remove unused * 下書きbackend 続き * fix(backedn): visibilityが下書きに反映されない * Update packages/backend/src/postgres.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Fix : import order * fix(backend) : createでcwが効かない * FIX FOREGIN KEY * wip: frontend(既存の下書きを挿入) まだ:チャンネル表示、下書きの作成、削除 * WIP: ノート選択ダイアログ 投稿時に下書きを削除 * Promiseに変更 * 連合なし、チャンネルも表示 * Hashtagの値抜け漏れ * hasthagを0文字でも作成可能に * 下書きの保存機構 * chore(misskey-js): build types * localOnly抜け漏れ * チャンネル情報の書き換え * enhance(frontend): ヘッダ部の表示改善 * fix(frontend): ファイル添付できない * fix: no file * fix(frontend): 投票が反映されない * ハッシュタグの展開(コメントアウト外し忘れ) * fix: visibleUserIdsが反映されない * enhance: APIの型を整備 * refactor: 型が整備できたのでasを削除 * Add userhost * fix * enhance: paginationを使う * fix * fix: 自分のアカウントでの投稿でしか下書きを利用できないように 完全に塞ぐことはできないが一応 * 🎨 * APIのエラーIDを追加 * enhance: スタイル調整 * remove unused code * 🎨 * fix: ロールポリシーの型 * ロールの編集画面 * ダイアログの挙動改善 * 下書き機能が利用できない場合は表示しないように * refactor * fix: ダブルクリックが効かない問題を修正 * add comments * fix * fix: 保存時のエラーの種別にかかわらずmodalを閉じないように * fix()backend: NoteDraftのreply, renoteの型が間違ってたので修正 (migtrationはあってた) * fix: 投稿フォームを空白にして通常リノートできるやつは下書きとしては弾くように * fix(backend): テキストが0文字でも下書きは保存できるように * Fix(backend): replyIdの型定義がミスっているのを修正 * chore(misskey-js): update types * Add CHANGELOG * lint * 常にサーバー下書きに保存し、上限を超えた場合のみ尋ねるように * NoteDraftServiceにcreate, updateの処理を移譲 * Fix typeerror * remove tooltip * Remove Mkbutton:short and use iconOnly * 不要なコメントの削除 * Remove Short Completely * wip * escキーまわりの挙動を改善 * 下書き選択時に下書き可能数と現在の量が分かるように * cleanUp * wip * wi * wip * Update MkPostForm.vue --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
89 lines
1.8 KiB
TypeScript
89 lines
1.8 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import * as Misskey from 'misskey-js';
|
|
import { i18n } from '@/i18n.js';
|
|
|
|
/**
|
|
* 投稿を表す文字列を取得します。
|
|
* @param {*} note (packされた)投稿
|
|
*/
|
|
export const getNoteSummary = (note?: Misskey.entities.Note | Misskey.entities.NoteDraft | null, opts?: {
|
|
/**
|
|
* ファイルの数を表示するかどうか
|
|
*/
|
|
showFiles?: boolean;
|
|
/**
|
|
* 投票の有無を表示するかどうか
|
|
*/
|
|
showPoll?: boolean;
|
|
/**
|
|
* 返信の有無を表示するかどうか
|
|
*/
|
|
showReply?: boolean;
|
|
/**
|
|
* Renoteの有無を表示するかどうか
|
|
*/
|
|
showRenote?: boolean;
|
|
}): string => {
|
|
const _opts = Object.assign({
|
|
showFiles: true,
|
|
showPoll: true,
|
|
showReply: true,
|
|
showRenote: true,
|
|
}, opts);
|
|
|
|
if (note == null) {
|
|
return '';
|
|
}
|
|
|
|
if ('deletedAt' in note && note.deletedAt) {
|
|
return `(${i18n.ts.deletedNote})`;
|
|
}
|
|
|
|
if ('isHidden' in note && note.isHidden) {
|
|
return `(${i18n.ts.invisibleNote})`;
|
|
}
|
|
|
|
let summary = '';
|
|
|
|
// 本文
|
|
if (note.cw != null) {
|
|
summary += note.cw;
|
|
} else {
|
|
summary += note.text ? note.text : '';
|
|
}
|
|
|
|
// ファイルが添付されているとき
|
|
if (_opts.showFiles && (note.files || []).length !== 0) {
|
|
summary += ` (${i18n.tsx.withNFiles({ n: note.files!.length })})`;
|
|
}
|
|
|
|
// 投票が添付されているとき
|
|
if (_opts.showPoll && note.poll) {
|
|
summary += ` (${i18n.ts.poll})`;
|
|
}
|
|
|
|
// 返信のとき
|
|
if (_opts.showReply && note.replyId) {
|
|
if (note.reply) {
|
|
summary += `\n\nRE: ${getNoteSummary(note.reply)}`;
|
|
} else {
|
|
summary += '\n\nRE: ...';
|
|
}
|
|
}
|
|
|
|
// Renoteのとき
|
|
if (_opts.showRenote && note.renoteId) {
|
|
if (note.renote) {
|
|
summary += `\n\nRN: ${getNoteSummary(note.renote)}`;
|
|
} else {
|
|
summary += '\n\nRN: ...';
|
|
}
|
|
}
|
|
|
|
return summary.trim();
|
|
};
|