@@ -113,6 +113,13 @@ function getStringValue(source: Record<string, unknown>, ...keys: string[]) {
113113 return typeof value === ' string' ? value : ' '
114114}
115115
116+ function getDateValue(source : Record <string , unknown >, ... keys : string []) {
117+ const value = getValue (source , ... keys )
118+ if (typeof value === ' string' ) return value
119+ if (typeof value === ' number' && Number .isFinite (value )) return String (value )
120+ return ' '
121+ }
122+
116123function getBooleanValue(source : Record <string , unknown >, ... keys : string []) {
117124 const value = getValue (source , ... keys )
118125 return typeof value === ' boolean' ? value : false
@@ -152,7 +159,7 @@ function parseBrowseResult(raw: unknown): FileBrowseResult {
152159 type: getStringValue (source , ' type' , ' Type' ),
153160 mode: getStringValue (source , ' mode' , ' Mode' ),
154161 size: getNumberValue (source , ' size' , ' Size' ),
155- mod_time: getStringValue (source , ' mod_time' , ' ModTime ' ),
162+ mod_time: getDateValue (source , ' mod_time' ),
156163 is_dir: getBooleanValue (source , ' is_dir' , ' IsDir' ),
157164 is_symlink: getBooleanValue (source , ' is_symlink' , ' IsSymlink' ),
158165 link_target: getStringValue (source , ' link_target' , ' LinkTarget' ),
@@ -224,7 +231,15 @@ function formatError(error: unknown) {
224231function formatDate(value ? : string ) {
225232 if (! value ) return ' Unknown'
226233
227- const date = new Date (value )
234+ const numericValue = Number (value )
235+ const parsedValue =
236+ Number .isFinite (numericValue ) && value .trim () !== ' '
237+ ? numericValue < 1e12
238+ ? numericValue * 1000
239+ : numericValue
240+ : value
241+
242+ const date = new Date (parsedValue )
228243 if (Number .isNaN (date .getTime ())) return value
229244
230245 return new Intl .DateTimeFormat (undefined , {
@@ -317,7 +332,7 @@ async function loadPath(path = '') {
317332 try {
318333 const result = await session .value .call (
319334 procedureFileBrowse ,
320- requestedPath ? [requestedPath ] : [" " ],
335+ requestedPath ? [requestedPath ] : [' ' ],
321336 )
322337 const browse = result .args ?.[0 ] ? parseBrowseResult (result .args [0 ]) : undefined
323338
@@ -486,7 +501,6 @@ onUnmounted(async () => {
486501 <div v-if =" errorMessage" class =" alert alert-danger mb-0 mt-3" >
487502 <i class =" bi bi-exclamation-octagon me-2" ></i >{{ errorMessage }}
488503 </div >
489-
490504 </section >
491505
492506 <div v-if =" isConnecting" class =" state-card" >
@@ -513,11 +527,7 @@ onUnmounted(async () => {
513527 <span >Show hidden files</span >
514528 </label >
515529 <span class =" entry-count" >
516- {{
517- currentBrowse.is_dir
518- ? `${visibleEntries.length} entries`
519- : currentBrowse.type
520- }}
530+ {{ currentBrowse.is_dir ? `${visibleEntries.length} entries` : currentBrowse.type }}
521531 </span >
522532 </div >
523533 </div >
@@ -530,9 +540,7 @@ onUnmounted(async () => {
530540 </div >
531541
532542 <div
533- v-else-if ="
534- currentBrowse && currentBrowse.is_dir && visibleEntries.length > 0
535- "
543+ v-else-if =" currentBrowse && currentBrowse.is_dir && visibleEntries.length > 0"
536544 class =" entry-list"
537545 >
538546 <button
@@ -550,7 +558,6 @@ onUnmounted(async () => {
550558 <div class =" entry-name" >{{ entry.name }}</div >
551559 <div class =" entry-meta" >
552560 <span >{{ entry.type }}</span >
553- <span >{{ formatDate(entry.mod_time) }}</span >
554561 </div >
555562 </div >
556563 </div >
0 commit comments