1
0
forked from baron/baron-sso

75f192fb24 기준 병합 code-check 수정

This commit is contained in:
2026-06-02 11:46:40 +09:00
parent 38605ac8a3
commit 2c5eed1774
17 changed files with 276 additions and 188 deletions

View File

@@ -119,9 +119,7 @@ function resolveAppLocale(): AppLocale {
return pathLocale;
}
return window.navigator.language.toLowerCase().startsWith("ko")
? "ko"
: "en";
return window.navigator.language.toLowerCase().startsWith("ko") ? "ko" : "en";
}
function formatRecentChangeTimestamp(value: string) {
@@ -390,7 +388,10 @@ function summarizeRecentChanges(
items: RecentClientChange[],
period: RPUsagePeriod,
): RecentChangePoint[] {
const byDate = new Map<string, { changeCount: number; actors: Set<string> }>();
const byDate = new Map<
string,
{ changeCount: number; actors: Set<string> }
>();
for (const item of items) {
const bucket = toPeriodBucket(item.timestamp.slice(0, 10), period);
const current = byDate.get(bucket) ?? {
@@ -447,7 +448,9 @@ function buildRecentChangeSeries(
items: RecentClientChange[],
period: RPUsagePeriod,
): RecentChangeSeries[] {
const dates = summarizeRecentChanges(items, period).map((point) => point.date);
const dates = summarizeRecentChanges(items, period).map(
(point) => point.date,
);
const byClient = new Map<
string,
{
@@ -937,7 +940,7 @@ function GlobalOverviewPage() {
const [visibleRecentClientChangesCount, setVisibleRecentClientChangesCount] =
useState(6);
const [isRecentChangesDetailOpen, setIsRecentChangesDetailOpen] =
useState(false);
useState(true);
const usageDays = period === "day" ? 14 : period === "week" ? 84 : 90;
const statsQuery = useQuery({
queryKey: ["dev-dashboard-stats"],
@@ -1112,40 +1115,34 @@ function GlobalOverviewPage() {
),
[currentClientIdSet, recentClientChangesWithActors],
);
const recentChangeFilterOptions = useMemo<ClientFilterOption[]>(
() => {
const activeOptions = Array.from(
new Map(
recentClientChangesWithActors
.filter((item) => currentClientIdSet.has(item.clientId))
.map((item) => [
item.clientId,
{ id: item.clientId, label: item.clientName },
]),
).values(),
).sort((left, right) => left.label.localeCompare(right.label));
const recentChangeFilterOptions = useMemo<ClientFilterOption[]>(() => {
const activeOptions = Array.from(
new Map(
recentClientChangesWithActors
.filter((item) => currentClientIdSet.has(item.clientId))
.map((item) => [
item.clientId,
{ id: item.clientId, label: item.clientName },
]),
).values(),
).sort((left, right) => left.label.localeCompare(right.label));
if (deletedRecentChangeClientIds.length === 0) {
return activeOptions;
}
if (deletedRecentChangeClientIds.length === 0) {
return activeOptions;
}
return [
...activeOptions,
{
id: deletedRecentChangeFilterId,
label: t(
"ui.dev.dashboard.recent_changes.deleted_group",
"삭제된 앱",
),
},
];
},
[
currentClientIdSet,
deletedRecentChangeClientIds.length,
recentClientChangesWithActors,
],
);
return [
...activeOptions,
{
id: deletedRecentChangeFilterId,
label: t("ui.dev.dashboard.recent_changes.deleted_group", "삭제된 앱"),
},
];
}, [
currentClientIdSet,
deletedRecentChangeClientIds.length,
recentClientChangesWithActors,
]);
const filteredRecentClientChanges = useMemo(() => {
if (selectedRecentChangeClientIds.length === 0) {
return recentClientChangesWithActors;
@@ -1155,7 +1152,8 @@ function GlobalOverviewPage() {
return recentClientChangesWithActors.filter(
(item) =>
selectedSet.has(item.clientId) ||
(includeDeletedGroup && deletedRecentChangeClientIds.includes(item.clientId)),
(includeDeletedGroup &&
deletedRecentChangeClientIds.includes(item.clientId)),
);
}, [
deletedRecentChangeClientIds,
@@ -1163,7 +1161,8 @@ function GlobalOverviewPage() {
selectedRecentChangeClientIds,
]);
const selectedRecentChangeSeries = useMemo(
() => buildRecentChangeSeries(filteredRecentClientChanges, recentChangesPeriod),
() =>
buildRecentChangeSeries(filteredRecentClientChanges, recentChangesPeriod),
[filteredRecentClientChanges, recentChangesPeriod],
);
const recentChangedClientCount = useMemo(
@@ -1180,7 +1179,9 @@ function GlobalOverviewPage() {
new Set(
filteredRecentClientChanges
.map((item) => item.clientId)
.filter((clientId) => deletedRecentChangeClientIds.includes(clientId)),
.filter((clientId) =>
deletedRecentChangeClientIds.includes(clientId),
),
).size,
[deletedRecentChangeClientIds, filteredRecentClientChanges],
);
@@ -1251,10 +1252,10 @@ function GlobalOverviewPage() {
};
useEffect(() => {
setVisibleRecentClientChangesCount((current) =>
Math.min(Math.max(6, current), filteredRecentClientChanges.length),
);
}, [filteredRecentClientChanges.length, selectedRecentChangeClientIds]);
setVisibleRecentClientChangesCount((current) =>
Math.min(Math.max(6, current), filteredRecentClientChanges.length),
);
}, [filteredRecentClientChanges.length]);
if (isLoadingDeveloperAccessGate) {
return (
@@ -1466,9 +1467,9 @@ function GlobalOverviewPage() {
<OverviewMetric
icon={<Layers3 size={14} />}
label={t(
"ui.dev.dashboard.recent_changes.summary.deleted_clients",
"삭제된 앱 수",
)}
"ui.dev.dashboard.recent_changes.summary.deleted_clients",
"삭제된 앱 수",
)}
value={deletedRecentChangedClientCount.toLocaleString()}
/>
<OverviewMetric
@@ -1533,8 +1534,9 @@ function GlobalOverviewPage() {
</div>
) : (
visibleRecentClientChanges.map((item) => {
const { date, time } =
formatRecentChangeTimestamp(item.timestamp);
const { date, time } = formatRecentChangeTimestamp(
item.timestamp,
);
return (
<div
key={item.eventId}
@@ -1600,7 +1602,6 @@ function GlobalOverviewPage() {
</div>
) : null}
</section>
</div>
);
}