Files
supabase/apps/studio/components/interfaces/Organization/AuditLogs/AuditLogs.utils.ts
Samir Ketema ee5d4a9314 chore: remove format param from audit log query (#45466)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Cleanup after shipping https://github.com/supabase/supabase/pull/45389,
the backend is now defaulting to the new v2 `format`, and made `format`
param optional.

So this:
- removes references to `v2` naming, as this is the only format
- removes the `format` query param from the audit logs API calls

## What is the current behavior?

Same audit log functionality shown in
https://github.com/supabase/supabase/pull/45389

## What is the new behavior?

Functionally the same behavior for audit logs.

- [x] Manual test in staging

## Additional context

⚠️ Will leave the `do-not-merge` tag on until:
- [ ] backend `format` optional PR lands in production.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Consolidated audit log type definitions and updated internal API
request formatting for audit endpoints across Account and Organization
audit log components. No changes to user-facing functionality or audit
log display.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-04 16:24:44 -07:00

53 lines
2.1 KiB
TypeScript

import dayjs from 'dayjs'
import { DatePickerToFrom } from '@/components/interfaces/Settings/Logs/Logs.types'
import type { AuditLog } from '@/data/organizations/organization-audit-logs-query'
export function sortAuditLogs(logs: AuditLog[], descending: boolean): AuditLog[] {
return [...logs].sort((a, b) =>
descending ? b.timestamp - a.timestamp : a.timestamp - b.timestamp
)
}
export function filterByUsers(logs: AuditLog[], userIds: string[]): AuditLog[] {
if (userIds.length === 0) return logs
return logs.filter((log) => userIds.includes(log.actor.user_id ?? ''))
}
export function filterByProjects(logs: AuditLog[], projectRefs: string[]): AuditLog[] {
if (projectRefs.length === 0) return logs
return logs.filter((log) => projectRefs.includes(log.project_ref ?? ''))
}
// [Joshen] Mainly to handle if a single date is selected - currently just for Audit Logs as
// i'm on the fence if this logic should be within the DatePicker component itself
// e.g for Logs.DatePicker which uses this component, the component itself has its own time selection UI
// JFYI currentDate is just a parameter so that I can run tests for this
export const formatSelectedDateRange = (value: DatePickerToFrom) => {
const current = dayjs()
const from = dayjs(value.from)
.hour(current.hour())
.minute(current.minute())
.second(current.second())
const to = dayjs(value.to).hour(current.hour()).minute(current.minute()).second(current.second())
if (from.date() === to.date()) {
// [Joshen] If a single date is selected, we either set the "from" to start from 00:00
// or "to" to end at 23:59 depending on which date was selected
if (from.date() === current.date()) {
return {
from: from.set('hour', 0).set('minute', 0).set('second', 0).utc().toISOString(),
to: to.utc().toISOString(),
}
} else {
return {
from: from.utc().toISOString(),
to: to.set('hour', 23).set('minute', 59).set('second', 59).utc().toISOString(),
}
}
} else {
return { from: from.utc().toISOString(), to: to.utc().toISOString() }
}
}