chore: 提交剩余开发改动
包含商务通消息映射、会话时间与未读状态、前端消息展示、数据库修复迁移、测试覆盖备份及 Captain 设计文档。
This commit is contained in:
@@ -3,6 +3,17 @@ const MINUTE_IN_MILLI_SECONDS = 60000;
|
||||
const HOUR_IN_MILLI_SECONDS = MINUTE_IN_MILLI_SECONDS * 60;
|
||||
const DAY_IN_MILLI_SECONDS = HOUR_IN_MILLI_SECONDS * 24;
|
||||
|
||||
const chineseShortTimestamp = timestamp => {
|
||||
if (timestamp === 'now') return '刚刚';
|
||||
return timestamp
|
||||
.replace(/^(\d+)mo$/, '$1个月')
|
||||
.replace(/^(\d+)m$/, '$1分钟')
|
||||
.replace(/^(\d+)h$/, '$1小时')
|
||||
.replace(/^(\d+)d$/, '$1天')
|
||||
.replace(/^(\d+)y$/, '$1年');
|
||||
};
|
||||
|
||||
import { zhCN } from 'date-fns/locale';
|
||||
import {
|
||||
dynamicTime,
|
||||
dateFormat,
|
||||
@@ -37,34 +48,49 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
isChineseLocale() {
|
||||
return this.$i18n.locale === 'zh_CN';
|
||||
},
|
||||
lastActivityTime() {
|
||||
return shortTimestamp(this.lastActivityAtTimeAgo);
|
||||
const timestamp = shortTimestamp(this.lastActivityAtTimeAgo);
|
||||
return this.isChineseLocale ? chineseShortTimestamp(timestamp) : timestamp;
|
||||
},
|
||||
createdAtTime() {
|
||||
return shortTimestamp(this.createdAtTimeAgo);
|
||||
const timestamp = shortTimestamp(this.createdAtTimeAgo);
|
||||
return this.isChineseLocale ? chineseShortTimestamp(timestamp) : timestamp;
|
||||
},
|
||||
createdAt() {
|
||||
const createdTimeDiff = Date.now() - this.createdAtTimestamp * 1000;
|
||||
const isBeforeAMonth = createdTimeDiff > DAY_IN_MILLI_SECONDS * 30;
|
||||
const relativeTime = this.isChineseLocale
|
||||
? dynamicTime(this.createdAtTimestamp, { locale: zhCN })
|
||||
: this.createdAtTimeAgo;
|
||||
const absoluteTime = this.isChineseLocale
|
||||
? dateFormat(this.createdAtTimestamp, 'yyyy年M月d日', { locale: zhCN })
|
||||
: dateFormat(this.createdAtTimestamp);
|
||||
return !isBeforeAMonth
|
||||
? `${this.$t('CHAT_LIST.CHAT_TIME_STAMP.CREATED.LATEST')} ${
|
||||
this.createdAtTimeAgo
|
||||
relativeTime
|
||||
}`
|
||||
: `${this.$t('CHAT_LIST.CHAT_TIME_STAMP.CREATED.OLDEST')} ${dateFormat(
|
||||
this.createdAtTimestamp
|
||||
)}`;
|
||||
: `${this.$t('CHAT_LIST.CHAT_TIME_STAMP.CREATED.OLDEST')} ${absoluteTime}`;
|
||||
},
|
||||
lastActivity() {
|
||||
const lastActivityTimeDiff =
|
||||
Date.now() - this.lastActivityTimestamp * 1000;
|
||||
const isNotActive = lastActivityTimeDiff > DAY_IN_MILLI_SECONDS * 30;
|
||||
const relativeTime = this.isChineseLocale
|
||||
? dynamicTime(this.lastActivityTimestamp, { locale: zhCN })
|
||||
: this.lastActivityAtTimeAgo;
|
||||
const absoluteTime = this.isChineseLocale
|
||||
? dateFormat(this.lastActivityTimestamp, 'yyyy年M月d日', { locale: zhCN })
|
||||
: dateFormat(this.lastActivityTimestamp);
|
||||
return !isNotActive
|
||||
? `${this.$t('CHAT_LIST.CHAT_TIME_STAMP.LAST_ACTIVITY.ACTIVE')} ${
|
||||
this.lastActivityAtTimeAgo
|
||||
relativeTime
|
||||
}`
|
||||
: `${this.$t(
|
||||
'CHAT_LIST.CHAT_TIME_STAMP.LAST_ACTIVITY.NOT_ACTIVE'
|
||||
)} ${dateFormat(this.lastActivityTimestamp)}`;
|
||||
)} ${absoluteTime}`;
|
||||
},
|
||||
tooltipText() {
|
||||
return `${this.createdAt}
|
||||
|
||||
Reference in New Issue
Block a user