Merge branch 'alpha' into refactor/model-pricing

This commit is contained in:
t0ng7u
2025-07-27 09:51:35 +08:00
3 changed files with 24 additions and 18 deletions

View File

@@ -60,6 +60,8 @@ export const useMjLogsData = () => {
// User and admin // User and admin
const isAdminUser = isAdmin(); const isAdminUser = isAdmin();
// Role-specific storage key to prevent different roles from overwriting each other
const STORAGE_KEY = isAdminUser ? 'mj-logs-table-columns-admin' : 'mj-logs-table-columns-user';
// Modal states // Modal states
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@@ -88,13 +90,14 @@ export const useMjLogsData = () => {
// Load saved column preferences from localStorage // Load saved column preferences from localStorage
useEffect(() => { useEffect(() => {
const savedColumns = localStorage.getItem('mj-logs-table-columns'); const savedColumns = localStorage.getItem(STORAGE_KEY);
if (savedColumns) { if (savedColumns) {
try { try {
const parsed = JSON.parse(savedColumns); const parsed = JSON.parse(savedColumns);
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
const merged = { ...defaults, ...parsed }; const merged = { ...defaults, ...parsed };
// If not admin, force hide columns only visible to admins
// For non-admin users, force-hide admin-only columns (does not touch admin settings)
if (!isAdminUser) { if (!isAdminUser) {
merged[COLUMN_KEYS.CHANNEL] = false; merged[COLUMN_KEYS.CHANNEL] = false;
merged[COLUMN_KEYS.SUBMIT_RESULT] = false; merged[COLUMN_KEYS.SUBMIT_RESULT] = false;
@@ -139,7 +142,7 @@ export const useMjLogsData = () => {
const initDefaultColumns = () => { const initDefaultColumns = () => {
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
setVisibleColumns(defaults); setVisibleColumns(defaults);
localStorage.setItem('mj-logs-table-columns', JSON.stringify(defaults)); localStorage.setItem(STORAGE_KEY, JSON.stringify(defaults));
}; };
// Handle column visibility change // Handle column visibility change
@@ -167,10 +170,10 @@ export const useMjLogsData = () => {
setVisibleColumns(updatedColumns); setVisibleColumns(updatedColumns);
}; };
// Update table when column visibility changes // Persist column settings to the role-specific STORAGE_KEY
useEffect(() => { useEffect(() => {
if (Object.keys(visibleColumns).length > 0) { if (Object.keys(visibleColumns).length > 0) {
localStorage.setItem('mj-logs-table-columns', JSON.stringify(visibleColumns)); localStorage.setItem(STORAGE_KEY, JSON.stringify(visibleColumns));
} }
}, [visibleColumns]); }, [visibleColumns]);

View File

@@ -58,6 +58,8 @@ export const useTaskLogsData = () => {
// User and admin // User and admin
const isAdminUser = isAdmin(); const isAdminUser = isAdmin();
// Role-specific storage key to prevent different roles from overwriting each other
const STORAGE_KEY = isAdminUser ? 'task-logs-table-columns-admin' : 'task-logs-table-columns-user';
// Modal state // Modal state
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@@ -86,13 +88,14 @@ export const useTaskLogsData = () => {
// Load saved column preferences from localStorage // Load saved column preferences from localStorage
useEffect(() => { useEffect(() => {
const savedColumns = localStorage.getItem('task-logs-table-columns'); const savedColumns = localStorage.getItem(STORAGE_KEY);
if (savedColumns) { if (savedColumns) {
try { try {
const parsed = JSON.parse(savedColumns); const parsed = JSON.parse(savedColumns);
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
const merged = { ...defaults, ...parsed }; const merged = { ...defaults, ...parsed };
// If not admin, force hide columns only visible to admins
// For non-admin users, force-hide admin-only columns (does not touch admin settings)
if (!isAdminUser) { if (!isAdminUser) {
merged[COLUMN_KEYS.CHANNEL] = false; merged[COLUMN_KEYS.CHANNEL] = false;
} }
@@ -127,7 +130,7 @@ export const useTaskLogsData = () => {
const initDefaultColumns = () => { const initDefaultColumns = () => {
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
setVisibleColumns(defaults); setVisibleColumns(defaults);
localStorage.setItem('task-logs-table-columns', JSON.stringify(defaults)); localStorage.setItem(STORAGE_KEY, JSON.stringify(defaults));
}; };
// Handle column visibility change // Handle column visibility change
@@ -152,10 +155,10 @@ export const useTaskLogsData = () => {
setVisibleColumns(updatedColumns); setVisibleColumns(updatedColumns);
}; };
// Update table when column visibility changes // Persist column settings to the role-specific STORAGE_KEY
useEffect(() => { useEffect(() => {
if (Object.keys(visibleColumns).length > 0) { if (Object.keys(visibleColumns).length > 0) {
localStorage.setItem('task-logs-table-columns', JSON.stringify(visibleColumns)); localStorage.setItem(STORAGE_KEY, JSON.stringify(visibleColumns));
} }
}, [visibleColumns]); }, [visibleColumns]);

View File

@@ -74,6 +74,8 @@ export const useLogsData = () => {
// User and admin // User and admin
const isAdminUser = isAdmin(); const isAdminUser = isAdmin();
// Role-specific storage key to prevent different roles from overwriting each other
const STORAGE_KEY = isAdminUser ? 'logs-table-columns-admin' : 'logs-table-columns-user';
// Statistics state // Statistics state
const [stat, setStat] = useState({ const [stat, setStat] = useState({
@@ -110,13 +112,14 @@ export const useLogsData = () => {
// Load saved column preferences from localStorage // Load saved column preferences from localStorage
useEffect(() => { useEffect(() => {
const savedColumns = localStorage.getItem('logs-table-columns'); const savedColumns = localStorage.getItem(STORAGE_KEY);
if (savedColumns) { if (savedColumns) {
try { try {
const parsed = JSON.parse(savedColumns); const parsed = JSON.parse(savedColumns);
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
const merged = { ...defaults, ...parsed }; const merged = { ...defaults, ...parsed };
// If not admin, force hide columns only visible to admins
// For non-admin users, force-hide admin-only columns (does not touch admin settings)
if (!isAdminUser) { if (!isAdminUser) {
merged[COLUMN_KEYS.CHANNEL] = false; merged[COLUMN_KEYS.CHANNEL] = false;
merged[COLUMN_KEYS.USERNAME] = false; merged[COLUMN_KEYS.USERNAME] = false;
@@ -156,7 +159,7 @@ export const useLogsData = () => {
const initDefaultColumns = () => { const initDefaultColumns = () => {
const defaults = getDefaultColumnVisibility(); const defaults = getDefaultColumnVisibility();
setVisibleColumns(defaults); setVisibleColumns(defaults);
localStorage.setItem('logs-table-columns', JSON.stringify(defaults)); localStorage.setItem(STORAGE_KEY, JSON.stringify(defaults));
}; };
// Handle column visibility change // Handle column visibility change
@@ -186,13 +189,10 @@ export const useLogsData = () => {
setVisibleColumns(updatedColumns); setVisibleColumns(updatedColumns);
}; };
// Update table when column visibility changes // Persist column settings to the role-specific STORAGE_KEY
useEffect(() => { useEffect(() => {
if (Object.keys(visibleColumns).length > 0) { if (Object.keys(visibleColumns).length > 0) {
localStorage.setItem( localStorage.setItem(STORAGE_KEY, JSON.stringify(visibleColumns));
'logs-table-columns',
JSON.stringify(visibleColumns),
);
} }
}, [visibleColumns]); }, [visibleColumns]);