resolve conflicts

pull/16900/head
crazywoola 1 year ago
parent f14c8d8d86
commit 37f9a3dbb0

@ -2,7 +2,7 @@
import { useContext, useContextSelector } from 'use-context-selector' import { useContext, useContextSelector } from 'use-context-selector'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { RiBuildingLine, RiGlobalLine, RiLockLine, RiMoreFill } from '@remixicon/react' import { RiBuildingLine, RiGlobalLine, RiLockLine, RiMoreFill } from '@remixicon/react'
import cn from '@/utils/classnames' import cn from '@/utils/classnames'
@ -35,6 +35,7 @@ import Tooltip from '@/app/components/base/tooltip'
import AccessControl from '@/app/components/app/app-access-control' import AccessControl from '@/app/components/app/app-access-control'
import { AccessMode } from '@/models/access-control' import { AccessMode } from '@/models/access-control'
import { useGlobalPublicStore } from '@/context/global-public-context' import { useGlobalPublicStore } from '@/context/global-public-context'
import { formatTime } from '@/utils/time'
export type AppCardProps = { export type AppCardProps = {
app: App app: App
@ -296,6 +297,15 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
setTags(app.tags) setTags(app.tags)
}, [app.tags]) }, [app.tags])
const EditTimeText = useMemo(() => {
const timeText = formatTime({
date: (app.updated_at || app.created_at) * 1000,
dateFormat: 'MM/DD/YYYY h:mm:ss',
})
return `${t('datasetDocuments.segment.editedAt')} ${timeText}`
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [app.updated_at, app.created_at])
return ( return (
<> <>
<div <div
@ -317,16 +327,13 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
<AppTypeIcon type={app.mode} wrapperClassName='absolute -bottom-0.5 -right-0.5 w-4 h-4 shadow-sm' className='h-3 w-3' /> <AppTypeIcon type={app.mode} wrapperClassName='absolute -bottom-0.5 -right-0.5 w-4 h-4 shadow-sm' className='h-3 w-3' />
</div> </div>
<div className='w-0 grow py-[1px]'> <div className='w-0 grow py-[1px]'>
<div className='flex items-center justify-between text-sm font-semibold leading-5 text-text-secondary'> <div className='flex items-center text-sm font-semibold leading-5 text-text-secondary'>
<div className='truncate' title={app.name}>{app.name}</div> <div className='truncate' title={app.name}>{app.name}</div>
<div className='truncate'>{app.author_name}</div>
</div> </div>
<div className='flex items-center text-[10px] font-medium leading-[18px] text-text-tertiary'> <div className='flex items-center gap-1 text-[10px] font-medium leading-[18px] text-text-tertiary'>
{app.mode === 'advanced-chat' && <div className='truncate'>{t('app.types.advanced').toUpperCase()}</div>} <div className='truncate' title={app.author_name}>{app.author_name}</div>
{app.mode === 'chat' && <div className='truncate'>{t('app.types.chatbot').toUpperCase()}</div>} <div>·</div>
{app.mode === 'agent-chat' && <div className='truncate'>{t('app.types.agent').toUpperCase()}</div>} <div className='truncate'>{EditTimeText}</div>
{app.mode === 'workflow' && <div className='truncate'>{t('app.types.workflow').toUpperCase()}</div>}
{app.mode === 'completion' && <div className='truncate'>{t('app.types.completion').toUpperCase()}</div>}
</div> </div>
</div> </div>
<div className='flex h-5 w-5 shrink-0 items-center justify-center'> <div className='flex h-5 w-5 shrink-0 items-center justify-center'>

@ -350,6 +350,8 @@ export type App = {
app_model_config: ModelConfig app_model_config: ModelConfig
/** Timestamp of creation */ /** Timestamp of creation */
created_at: number created_at: number
/** Timestamp of update */
updated_at: number
/** Web Application Configuration */ /** Web Application Configuration */
site: SiteConfig site: SiteConfig
/** api site url */ /** api site url */

Loading…
Cancel
Save