summaryrefslogtreecommitdiff
path: root/src/misc/get-note-summary.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-07-07 19:19:00 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-07-07 19:19:00 +0900
commitaa4ef6745ad798bd7d4f05cb397ef1dd85279814 (patch)
treed34ded516f52b91c4ff1a5443776ce22d8f483f0 /src/misc/get-note-summary.ts
parentRefactorijg (diff)
downloadsharkey-aa4ef6745ad798bd7d4f05cb397ef1dd85279814.tar.gz
sharkey-aa4ef6745ad798bd7d4f05cb397ef1dd85279814.tar.bz2
sharkey-aa4ef6745ad798bd7d4f05cb397ef1dd85279814.zip
Refactorng
Diffstat (limited to 'src/misc/get-note-summary.ts')
-rw-r--r--src/misc/get-note-summary.ts50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/misc/get-note-summary.ts b/src/misc/get-note-summary.ts
new file mode 100644
index 0000000000..ec7c74cf9f
--- /dev/null
+++ b/src/misc/get-note-summary.ts
@@ -0,0 +1,50 @@
+/**
+ * 投稿を表す文字列を取得します。
+ * @param {*} note (packされた)投稿
+ */
+const summarize = (note: any): string => {
+ if (note.deletedAt) {
+ return '(削除された投稿)';
+ }
+
+ if (note.isHidden) {
+ return '(非公開の投稿)';
+ }
+
+ let summary = '';
+
+ // 本文
+ summary += note.text ? note.text : '';
+
+ // メディアが添付されているとき
+ if (note.media.length != 0) {
+ summary += ` (${note.media.length}つのメディア)`;
+ }
+
+ // 投票が添付されているとき
+ if (note.poll) {
+ summary += ' (投票)';
+ }
+
+ // 返信のとき
+ if (note.replyId) {
+ if (note.reply) {
+ summary += ` RE: ${summarize(note.reply)}`;
+ } else {
+ summary += ' RE: ...';
+ }
+ }
+
+ // Renoteのとき
+ if (note.renoteId) {
+ if (note.renote) {
+ summary += ` RP: ${summarize(note.renote)}`;
+ } else {
+ summary += ' RP: ...';
+ }
+ }
+
+ return summary.trim();
+};
+
+export default summarize;