From 468a4d820f785ae6d5741e3585255f7a2e90ec78 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Fri, 12 Apr 2024 09:45:49 +1000 Subject: [PATCH] feat(settings): notification position --- locales/al.json | 13 ++++++- locales/ar.json | 13 ++++++- locales/cs.json | 13 ++++++- locales/da.json | 13 ++++++- locales/de.json | 13 ++++++- locales/en.json | 13 ++++++- locales/es.json | 13 ++++++- locales/et.json | 13 ++++++- locales/fi.json | 13 ++++++- locales/fr.json | 13 ++++++- locales/he.json | 13 ++++++- locales/hr.json | 13 ++++++- locales/hu.json | 13 ++++++- locales/id.json | 13 ++++++- locales/it.json | 13 ++++++- locales/lt.json | 13 ++++++- locales/nl.json | 13 ++++++- locales/no.json | 13 ++++++- locales/pl.json | 13 ++++++- locales/pt-br.json | 13 ++++++- locales/ru.json | 13 ++++++- locales/sk.json | 13 ++++++- locales/sl.json | 13 ++++++- locales/sv.json | 13 ++++++- locales/th.json | 13 ++++++- locales/tr.json | 13 ++++++- locales/zh-cn.json | 13 ++++++- locales/zh-tw.json | 13 ++++++- resource/interface/client/notify.lua | 1 + resource/locale/client.lua | 3 -- resource/settings.lua | 56 +++++++++++++++++++++++++--- 31 files changed, 387 insertions(+), 37 deletions(-) diff --git a/locales/al.json b/locales/al.json index 860f725..09085b7 100644 --- a/locales/al.json +++ b/locales/al.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/ar.json b/locales/ar.json index 84445d4..07687c7 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/cs.json b/locales/cs.json index 503287d..fdb6ebc 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Otevřít kruhové menu", diff --git a/locales/da.json b/locales/da.json index 413a358..9538975 100644 --- a/locales/da.json +++ b/locales/da.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/de.json b/locales/de.json index c7404c9..94fbfa0 100644 --- a/locales/de.json +++ b/locales/de.json @@ -8,7 +8,18 @@ "settings": { "locale": "Sprache ändern", "locale_description": "Aktuelle Sprache: ${language} (%s)", - "notification_audio": "Benachrichtigungs-Sound" + "notification_audio": "Benachrichtigungs-Sound", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Radial Menu öffnen", diff --git a/locales/en.json b/locales/en.json index 8bdaf61..3790401 100644 --- a/locales/en.json +++ b/locales/en.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/es.json b/locales/es.json index 86e8657..b436776 100644 --- a/locales/es.json +++ b/locales/es.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/et.json b/locales/et.json index 51f1aa6..1d57d8d 100644 --- a/locales/et.json +++ b/locales/et.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Ava rullikmenüü", diff --git a/locales/fi.json b/locales/fi.json index eb8ab52..1d99447 100644 --- a/locales/fi.json +++ b/locales/fi.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/fr.json b/locales/fr.json index b9f6cb8..f70684d 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/he.json b/locales/he.json index 3bf2ab5..c0d232c 100644 --- a/locales/he.json +++ b/locales/he.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/hr.json b/locales/hr.json index b8498df..cf6f3bd 100644 --- a/locales/hr.json +++ b/locales/hr.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/hu.json b/locales/hu.json index 9fc9ea8..2a9d5b2 100644 --- a/locales/hu.json +++ b/locales/hu.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/id.json b/locales/id.json index 196464d..9fd6add 100644 --- a/locales/id.json +++ b/locales/id.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/it.json b/locales/it.json index e30ab93..7495c86 100644 --- a/locales/it.json +++ b/locales/it.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/lt.json b/locales/lt.json index e714542..d1fbfb1 100644 --- a/locales/lt.json +++ b/locales/lt.json @@ -8,7 +8,18 @@ "settings": { "locale": "Pakeisti kalbą", "locale_description": "Dabartinė: ${language} (%s)", - "notification_audio": "Pranešimo garsas" + "notification_audio": "Pranešimo garsas", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Atidaryti radialinį meniu", diff --git a/locales/nl.json b/locales/nl.json index 255a193..966309c 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/no.json b/locales/no.json index 37827bd..765df77 100644 --- a/locales/no.json +++ b/locales/no.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Åpne radial menyen", diff --git a/locales/pl.json b/locales/pl.json index ec5ebe2..ffaf6be 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/pt-br.json b/locales/pt-br.json index bc06042..bee392b 100644 --- a/locales/pt-br.json +++ b/locales/pt-br.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/ru.json b/locales/ru.json index 12bef1b..be8371f 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/sk.json b/locales/sk.json index e106a16..d103045 100644 --- a/locales/sk.json +++ b/locales/sk.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/sl.json b/locales/sl.json index 4a77fe9..5bb4c89 100644 --- a/locales/sl.json +++ b/locales/sl.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/sv.json b/locales/sv.json index 6fa3ce8..405b9a4 100644 --- a/locales/sv.json +++ b/locales/sv.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/th.json b/locales/th.json index 732e876..d770e90 100644 --- a/locales/th.json +++ b/locales/th.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/tr.json b/locales/tr.json index 9e193a5..2d1cef8 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/zh-cn.json b/locales/zh-cn.json index 75c89a8..35b50c6 100644 --- a/locales/zh-cn.json +++ b/locales/zh-cn.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/locales/zh-tw.json b/locales/zh-tw.json index 7afd8cd..aeb5e67 100644 --- a/locales/zh-tw.json +++ b/locales/zh-tw.json @@ -8,7 +8,18 @@ "settings": { "locale": "Change locale", "locale_description": "Current language: ${language} (%s)", - "notification_audio": "Notification audio" + "notification_audio": "Notification audio", + "notification_position": "Notification position" + }, + "position": { + "bottom": "Bottom", + "bottom-left": "Bottom-left", + "bottom-right": "Bottom-right", + "center-left": "Center-left", + "center-right": "Center-right", + "top": "Top", + "top-left": "Top-left", + "top-right": "Top-right" } }, "open_radial_menu": "Open radial menu", diff --git a/resource/interface/client/notify.lua b/resource/interface/client/notify.lua index c8f09d6..d804a2d 100644 --- a/resource/interface/client/notify.lua +++ b/resource/interface/client/notify.lua @@ -24,6 +24,7 @@ local settings = require 'resource.settings' function lib.notify(data) local sound = settings.notification_audio and data.sound data.sound = nil + data.position = data.position or settings.notification_position SendNUIMessage({ action = 'notify', diff --git a/resource/locale/client.lua b/resource/locale/client.lua index 527f68e..7449769 100644 --- a/resource/locale/client.lua +++ b/resource/locale/client.lua @@ -11,9 +11,6 @@ function lib.getLocaleKey() return settings.locale end ---@param key string function lib.setLocale(key) - settings.locale = key - - SetResourceKvp('locale', key) TriggerEvent('ox_lib:setLocale', key) SendNUIMessage({ action = 'setLocale', diff --git a/resource/settings.lua b/resource/settings.lua index 812e10e..ffb4e3c 100644 --- a/resource/settings.lua +++ b/resource/settings.lua @@ -1,8 +1,32 @@ local settings = { locale = GetResourceKvpString('locale'), + notification_position = GetResourceKvpString('notification_position') or 'top-right', notification_audio = GetResourceKvpInt('notification_audio') == 1 } +local function set(key, value) + if settings[key] == value then return false end + + settings[key] = value + local valueType = type(value) + + if valueType == 'nil' then + DeleteResourceKvp(key) + elseif valueType == 'string' then + SetResourceKvp(key, value) + elseif valueType == 'table' then + SetResourceKvp(key, json.encode(value)) + elseif valueType == 'number' then + SetResourceKvpInt(key, value) + elseif valueType == 'boolean' then + SetResourceKvpInt(key, value and 1 or 0) + else + return false + end + + return true +end + RegisterCommand('ox_lib', function() local input = lib.inputDialog('Settings', { { @@ -11,23 +35,43 @@ RegisterCommand('ox_lib', function() searchable = true, description = locale('ui.settings.locale_description', settings.locale), options = GlobalState['ox_lib:locales'], + default = settings.locale, + required = true, icon = 'book', }, + { + type = 'select', + label = locale('ui.settings.notification_position'), + options = { + { label = locale('ui.position.top-right'), value = 'top-right' }, + { label = locale('ui.position.top'), value = 'top' }, + { label = locale('ui.position.top-left'), value = 'top-left' }, + { label = locale('ui.position.center-right'), value = 'center-right' }, + { label = locale('ui.position.center-left'), value = 'center-left' }, + { label = locale('ui.position.bottom-right'), value = 'bottom-right' }, + { label = locale('ui.position.bottom'), value = 'bottom' }, + { label = locale('ui.position.bottom-left'), value = 'bottom-left' }, + }, + default = settings.notification_position, + required = true, + icon = 'message', + }, { type = 'checkbox', label = locale('ui.settings.notification_audio'), checked = settings.notification_audio, } - }) --[[@as any]] + }) --[[@as table?]] if not input then return end - if input[1] then lib.setLocale(input[1]) end + ---@type string, string, boolean + local locale, notification_position, notification_audio = table.unpack(input) - if input[2] ~= nil then - settings.notification_audio = input[2] - SetResourceKvpInt('notification_audio', input[2] and 1 or 0) - end + if set('locale', locale) then lib.setLocale(locale) end + + set('notification_position', notification_position) + set('notification_audio', notification_audio) end) return settings