UBERF-8313: Fix select workspace sorting (#6766)

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Andrey Sobolev 2024-09-30 12:59:41 +07:00 committed by GitHub
parent 64d5ceab0f
commit 6b68b7f90a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 23 deletions

View File

@ -14,18 +14,18 @@
//
import { Analytics } from '@hcengineering/analytics'
import { AccountRole, type Doc, type Ref, concatLink } from '@hcengineering/core'
import { AccountRole, concatLink, type Doc, type Ref } from '@hcengineering/core'
import { loginId, type LoginInfo, type OtpInfo, type Workspace, type WorkspaceLoginInfo } from '@hcengineering/login'
import {
OK,
PlatformError,
Severity,
Status,
getMetadata,
setMetadata,
translate,
unknownError,
unknownStatus,
Status,
Severity
unknownStatus
} from '@hcengineering/platform'
import presentation from '@hcengineering/presentation'
import {
@ -39,9 +39,9 @@ import {
} from '@hcengineering/ui'
import { workbenchId } from '@hcengineering/workbench'
import login from './plugin'
import { type Pages } from './index'
import { LoginEvents } from './analytics'
import { type Pages } from './index'
import login from './plugin'
/**
* Perform a login operation to required workspace with user credentials.
@ -207,6 +207,16 @@ export async function createWorkspace (
}
}
function getLastVisitDays (it: Workspace): number {
return Math.floor((Date.now() - it.lastVisit) / (1000 * 3600 * 24))
}
function getWorkspaceSize (it: Workspace): number {
let sz = 0
sz += it.backupInfo?.dataSize ?? 0
sz += it.backupInfo?.blobsSize ?? 0
return sz
}
export async function getWorkspaces (): Promise<Workspace[]> {
const accountsUrl = getMetadata(login.metadata.AccountsUrl)
@ -241,7 +251,18 @@ export async function getWorkspaces (): Promise<Workspace[]> {
if (result.error != null) {
throw new PlatformError(result.error)
}
return result.result
const workspaces: Workspace[] = result.result
workspaces.sort((a, b) => {
const adays = getLastVisitDays(a)
const bdays = getLastVisitDays(b)
if (adays === bdays) {
return getWorkspaceSize(b) - getWorkspaceSize(a)
}
return bdays - adays
})
return workspaces
} catch (err) {
return []
}

View File

@ -37,24 +37,9 @@
import { workspacesStore } from '../utils'
// import Drag from './icons/Drag.svelte'
function getLastVisitDays (it: Workspace): number {
return Math.floor((Date.now() - it.lastVisit) / (1000 * 3600 * 24))
}
onMount(() => {
void getResource(login.function.GetWorkspaces).then(async (f) => {
const workspaces = await f()
workspaces.sort((a, b) => {
const adays = getLastVisitDays(a)
const bdays = getLastVisitDays(a)
if (adays === bdays) {
return (b.backupInfo?.backupSize ?? 0) - (a.backupInfo?.backupSize ?? 0)
}
return bdays - adays
})
$workspacesStore = workspaces
$workspacesStore = await f()
})
})