diff --git a/frontend/src/pages/AdminUserRestrictionsPage.jsx b/frontend/src/pages/AdminUserRestrictionsPage.jsx
index 72e6555..5b5e3d8 100644
--- a/frontend/src/pages/AdminUserRestrictionsPage.jsx
+++ b/frontend/src/pages/AdminUserRestrictionsPage.jsx
@@ -77,13 +77,7 @@ export default function AdminUserRestrictionsPage() {
function handleChange(featureId, value) {
const newChanges = { ...changes }
-
- // Empty string means: remove override
- if (value === '') {
- newChanges[featureId] = { action: 'remove', tempValue: '' }
- setChanges(newChanges)
- return
- }
+ const tierLimit = tierLimits[featureId]
// Parse value (EXACTLY like TierLimitsPage)
let parsedValue = null
@@ -91,6 +85,8 @@ export default function AdminUserRestrictionsPage() {
parsedValue = null // unlimited
} else if (value === '0' || value === 'disabled') {
parsedValue = 0 // disabled
+ } else if (value === '') {
+ parsedValue = null // empty → unlimited
} else {
const num = parseInt(value)
if (!isNaN(num) && num >= 0) {
@@ -100,7 +96,14 @@ export default function AdminUserRestrictionsPage() {
}
}
- newChanges[featureId] = { action: 'set', value: parsedValue, tempValue: value }
+ // Check if value equals tier limit → remove override
+ if (parsedValue === tierLimit) {
+ newChanges[featureId] = { action: 'remove', tempValue: value }
+ } else {
+ // Different from tier default → set override
+ newChanges[featureId] = { action: 'set', value: parsedValue, tempValue: value }
+ }
+
setChanges(newChanges)
}
@@ -175,22 +178,30 @@ export default function AdminUserRestrictionsPage() {
// Check pending changes first
if (featureId in changes) {
const change = changes[featureId]
- if (change.action === 'remove') return ''
+ if (change.action === 'remove') {
+ // Returning to tier default
+ return formatValue(tierLimits[featureId])
+ }
if (change.action === 'set') {
// Use tempValue for display if available, otherwise format the value
return change.tempValue !== undefined ? change.tempValue : formatValue(change.value)
}
}
- // Show existing restriction value (or empty if no restriction)
+ // Show override if exists, otherwise tier limit (= effective value)
const restriction = restrictions.find(r => r.feature_id === featureId)
- if (!restriction) return '' // No override = empty input
- return formatValue(restriction.limit_value)
+ if (restriction) {
+ return formatValue(restriction.limit_value)
+ }
+
+ // No override: show tier limit as default
+ return formatValue(tierLimits[featureId])
}
function formatValue(val) {
- if (val === '' || val === null || val === undefined) return ''
- if (val === '∞' || val === 'unlimited') return '∞'
+ if (val === null || val === undefined) return 'unlimited'
+ if (val === '' ) return ''
+ if (val === '∞' || val === 'unlimited') return 'unlimited'
if (val === 0 || val === '0') return '0'
return val.toString()
}
@@ -258,9 +269,8 @@ export default function AdminUserRestrictionsPage() {
}}>