aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2023-12-06 14:09:09 +0100
committerMarcel Klehr <mklehr@gmx.net>2023-12-07 09:57:21 +0100
commit162f8017448d19efe9c4278ee89736e7b38f8d3b (patch)
tree37dcb9073412b3ae5bde983344616a0e489c3b43 /apps/settings/src
parentc41cbcf7ba13f68a8e5d702dfc67b58d24bb0eb4 (diff)
downloadnextcloud-server-162f8017448d19efe9c4278ee89736e7b38f8d3b.tar.gz
nextcloud-server-162f8017448d19efe9c4278ee89736e7b38f8d3b.zip
fix(Users/Quota setting): Prevent floating point value from getting truncated in locales other than english
fixes #18468 Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'apps/settings/src')
-rw-r--r--apps/settings/src/components/Users/UserRow.vue20
-rw-r--r--apps/settings/src/store/users.js3
2 files changed, 13 insertions, 10 deletions
diff --git a/apps/settings/src/components/Users/UserRow.vue b/apps/settings/src/components/Users/UserRow.vue
index 68ffde11849..868bc21de14 100644
--- a/apps/settings/src/components/Users/UserRow.vue
+++ b/apps/settings/src/components/Users/UserRow.vue
@@ -307,6 +307,7 @@ import UserRowActions from './UserRowActions.vue'
import UserRowMixin from '../../mixins/UserRowMixin.js'
import { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'
+import {formatFileSize, parseFileSize} from "@nextcloud/files";
export default {
name: 'UserRow',
@@ -435,9 +436,9 @@ export default {
usedSpace() {
if (this.user.quota?.used) {
- return t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota?.used) })
+ return t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })
}
- return t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })
+ return t('settings', '{size} used', { size: formatFileSize(0) })
},
canEdit() {
@@ -451,7 +452,7 @@ export default {
quota = this.settings.defaultQuota
if (quota !== 'none') {
// convert to numeric value to match what the server would usually return
- quota = OC.Util.computerFileSize(quota)
+ quota = parseFileSize(quota, true)
}
}
@@ -459,9 +460,9 @@ export default {
if (quota === 'none' || quota === -3) {
return t('settings', 'Unlimited')
} else if (quota >= 0) {
- return OC.Util.humanFileSize(quota)
+ return formatFileSize(quota)
}
- return OC.Util.humanFileSize(0)
+ return formatFileSize(0)
},
userActions() {
@@ -498,7 +499,7 @@ export default {
if (this.selectedQuota !== false) {
return this.selectedQuota
}
- if (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {
+ if (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {
// if value is valid, let's map the quotaOptions or return custom quota
return { id: this.settings.defaultQuota, label: this.settings.defaultQuota }
}
@@ -834,7 +835,8 @@ export default {
await this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'quota',
- value: quota,
+ // translate from locale string format to raw float format so backend can read it
+ value: '' + parseFileSize(quota, true)
})
} catch (error) {
console.error(error)
@@ -855,12 +857,12 @@ export default {
quota = quota?.id || quota.label
}
// only used for new presets sent through @Tag
- const validQuota = OC.Util.computerFileSize(quota)
+ const validQuota = parseFileSize(quota, true)
if (validQuota === null) {
return unlimitedQuota
} else {
// unify format output
- quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota))
+ quota = formatFileSize(parseFileSize(quota, true))
return { id: quota, label: quota }
}
},
diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js
index 2682415a016..499aa73170d 100644
--- a/apps/settings/src/store/users.js
+++ b/apps/settings/src/store/users.js
@@ -32,6 +32,7 @@ import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
import { getCapabilities } from '@nextcloud/capabilities'
import logger from '../logger.js'
+import { parseFileSize } from "@nextcloud/files"
const orderGroups = function(groups, orderBy) {
/* const SORT_USERCOUNT = 1;
@@ -227,7 +228,7 @@ const mutations = {
},
setUserData(state, { userid, key, value }) {
if (key === 'quota') {
- const humanValue = OC.Util.computerFileSize(value)
+ const humanValue = parseFileSize(value, true)
state.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value
} else {
state.users.find(user => user.id === userid)[key] = value