From 4f248afe76aafdacb45eddeee4b3c78fdfdaac6c Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sun, 14 Sep 2025 08:48:49 +0200 Subject: [PATCH] overhauld space management and settings system --- cookbook/serializer.py | 12 +- cookbook/views/api.py | 2 +- vue3/src/apps/tandoor/main.ts | 2 - .../components/display/SpaceLimitsInfo.vue | 72 ++++++++ vue3/src/components/display/ThankYouNote.vue | 47 +++++ .../components/model_editors/SpaceEditor.vue | 7 +- .../components/settings/AccountSettings.vue | 6 +- .../settings/SpaceMemberSettings.vue | 122 ------------- .../src/components/settings/SpaceSettings.vue | 163 +----------------- .../components/settings/UserSpaceSettings.vue | 66 ------- vue3/src/locales/ar.json | 1 + vue3/src/locales/bg.json | 1 + vue3/src/locales/ca.json | 1 + vue3/src/locales/cs.json | 1 + vue3/src/locales/da.json | 1 + vue3/src/locales/de.json | 1 + vue3/src/locales/el.json | 1 + vue3/src/locales/en.json | 1 + vue3/src/locales/es.json | 1 + vue3/src/locales/fi.json | 1 + vue3/src/locales/fr.json | 1 + vue3/src/locales/he.json | 1 + vue3/src/locales/hr.json | 1 + vue3/src/locales/hu.json | 1 + vue3/src/locales/hy.json | 1 + vue3/src/locales/id.json | 1 + vue3/src/locales/is.json | 1 + vue3/src/locales/it.json | 1 + vue3/src/locales/lt.json | 1 + vue3/src/locales/lv.json | 1 + vue3/src/locales/nb_NO.json | 1 + vue3/src/locales/nl.json | 1 + vue3/src/locales/pl.json | 1 + vue3/src/locales/pt.json | 1 + vue3/src/locales/pt_BR.json | 1 + vue3/src/locales/ro.json | 1 + vue3/src/locales/ru.json | 1 + vue3/src/locales/sl.json | 1 + vue3/src/locales/sv.json | 1 + vue3/src/locales/tr.json | 1 + vue3/src/locales/uk.json | 1 + vue3/src/locales/zh_Hans.json | 1 + vue3/src/locales/zh_Hant.json | 1 + vue3/src/openapi/apis/ApiApi.ts | 45 +++++ vue3/src/pages/SettingsPage.vue | 2 - vue3/src/pages/WelcomePage.vue | 3 + 46 files changed, 221 insertions(+), 361 deletions(-) create mode 100644 vue3/src/components/display/SpaceLimitsInfo.vue create mode 100644 vue3/src/components/display/ThankYouNote.vue delete mode 100644 vue3/src/components/settings/SpaceMemberSettings.vue delete mode 100644 vue3/src/components/settings/UserSpaceSettings.vue diff --git a/cookbook/serializer.py b/cookbook/serializer.py index f77b8a243..500873597 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -368,10 +368,10 @@ class AiLogSerializer(serializers.ModelSerializer): class SpaceSerializer(WritableNestedModelSerializer): created_by = UserSerializer(read_only=True) - user_count = serializers.SerializerMethodField('get_user_count') - recipe_count = serializers.SerializerMethodField('get_recipe_count') - file_size_mb = serializers.SerializerMethodField('get_file_size_mb') - ai_monthly_credits_used = serializers.SerializerMethodField('get_ai_monthly_credits_used') + user_count = serializers.SerializerMethodField('get_user_count', read_only=True) + recipe_count = serializers.SerializerMethodField('get_recipe_count', read_only=True) + file_size_mb = serializers.SerializerMethodField('get_file_size_mb', read_only=True) + ai_monthly_credits_used = serializers.SerializerMethodField('get_ai_monthly_credits_used', read_only=True) ai_default_provider = AiProviderSerializer(required=False, allow_null=True) food_inherit = FoodInheritFieldSerializer(many=True, required=False) image = UserFileViewSerializer(required=False, many=False, allow_null=True) @@ -413,8 +413,8 @@ class SpaceSerializer(WritableNestedModelSerializer): name = None if 'name' in validated_data: name = validated_data['name'] - space = create_space_for_user(self.context['request'].user, name) - return space + user_space = create_space_for_user(self.context['request'].user, name) + return user_space.space def update(self, instance, validated_data): if 'ai_enabled' in validated_data and not self.context['request'].user.is_superuser: diff --git a/cookbook/views/api.py b/cookbook/views/api.py index befb4db8d..0c93c04ba 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -548,7 +548,7 @@ class SpaceViewSet(LoggingMixin, viewsets.ModelViewSet): serializer_class = SpaceSerializer permission_classes = [IsReadOnlyDRF & CustomIsGuest | CustomIsOwner & CustomIsAdmin & CustomTokenHasReadWriteScope] pagination_class = DefaultPagination - http_method_names = ['get', 'post', 'patch'] + http_method_names = ['get', 'post', 'put', 'patch'] def get_queryset(self): return self.queryset.filter( diff --git a/vue3/src/apps/tandoor/main.ts b/vue3/src/apps/tandoor/main.ts index 17d8cf0f0..490400452 100644 --- a/vue3/src/apps/tandoor/main.ts +++ b/vue3/src/apps/tandoor/main.ts @@ -29,8 +29,6 @@ let routes = [ {path: 'meal-plan', component: () => import("@/components/settings/MealPlanSettings.vue"), name: 'MealPlanSettings', meta: {title: 'Settings'}}, {path: 'search', component: () => import("@/components/settings/SearchSettings.vue"), name: 'SearchSettings', meta: {title: 'Settings'}}, {path: 'space', component: () => import("@/components/settings/SpaceSettings.vue"), name: 'SpaceSettings', meta: {title: 'Settings'}}, - {path: 'space-members', component: () => import("@/components/settings/SpaceMemberSettings.vue"), name: 'SpaceMemberSettings', meta: {title: 'Settings'}}, - {path: 'user-space', component: () => import("@/components/settings/UserSpaceSettings.vue"), name: 'UserSpaceSettings', meta: {title: 'Settings'}}, {path: 'open-data-import', component: () => import("@/components/settings/OpenDataImportSettings.vue"), name: 'OpenDataImportSettings', meta: {title: 'Settings'}}, {path: 'export', component: () => import("@/components/settings/ExportDataSettings.vue"), name: 'ExportDataSettings', meta: {title: 'Settings'}}, {path: 'api', component: () => import("@/components/settings/ApiSettings.vue"), name: 'ApiSettings', meta: {title: 'Settings'}}, diff --git a/vue3/src/components/display/SpaceLimitsInfo.vue b/vue3/src/components/display/SpaceLimitsInfo.vue new file mode 100644 index 000000000..bbccbf319 --- /dev/null +++ b/vue3/src/components/display/SpaceLimitsInfo.vue @@ -0,0 +1,72 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/ThankYouNote.vue b/vue3/src/components/display/ThankYouNote.vue new file mode 100644 index 000000000..132cebf75 --- /dev/null +++ b/vue3/src/components/display/ThankYouNote.vue @@ -0,0 +1,47 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/model_editors/SpaceEditor.vue b/vue3/src/components/model_editors/SpaceEditor.vue index 10dbd820f..b69a88af6 100644 --- a/vue3/src/components/model_editors/SpaceEditor.vue +++ b/vue3/src/components/model_editors/SpaceEditor.vue @@ -27,7 +27,9 @@ - + + + @@ -81,13 +83,14 @@ - - \ No newline at end of file diff --git a/vue3/src/components/settings/SpaceSettings.vue b/vue3/src/components/settings/SpaceSettings.vue index a94b93d5d..99524b970 100644 --- a/vue3/src/components/settings/SpaceSettings.vue +++ b/vue3/src/components/settings/SpaceSettings.vue @@ -3,172 +3,17 @@

{{ useUserPreferenceStore().activeSpace.name }}

- - - - {{ $t('Recipes') }} - {{ $n(space.recipeCount) }} / {{ space.maxRecipes == 0 ? '∞' : $n(space.maxRecipes) }} - - - - - - - {{ $t('Users') }} - {{ $n(space.userCount) }} / {{ space.maxUsers == 0 ? '∞' : $n(space.maxUsers) }} - - - - - - {{ $t('Files') }} - {{ $n(Math.round(space.fileSizeMb)) }} / {{ space.maxFileStorageMb == 0 ? '∞' : $n(space.maxFileStorageMb) }} - MB - - {{ $t('file_upload_disabled') }} - - - - - - - - - - - - {{ $t('ThankYou') }}! - - - - {{ $t('ManageSubscription') }} - - - - -

{{ $t('ThanksTextHosted') }}

-
- - - - - - - {{ $t('ThankYou') }}! - - - - GitHub Sponsors - - - - - -

{{ $t('ThanksTextSelfhosted') }}

-
- - -

{{ $t('Settings') }}

- - - - - - - - - {{ $t('Save') }} - -

{{ $t('AI') }}

- -

- - {{ $t('AISettingsHostedHelp') }} - - - {{ $t('SettingsOnlySuperuser') }} - -

- - - - - {{ $t('Save') }} - - -

{{ $t('Cosmetic') }}

- {{ $t('Space_Cosmetic_Settings') }} - - {{ $t('Nav_Color') }} - - {{ $t('Reset') }} - - - - - - - - - - - - - - {{ $t('Save') }} + \ No newline at end of file diff --git a/vue3/src/locales/ar.json b/vue3/src/locales/ar.json index 422881c89..bd6d1a053 100644 --- a/vue3/src/locales/ar.json +++ b/vue3/src/locales/ar.json @@ -288,6 +288,7 @@ "Show_as_header": "", "Single": "", "Size": "", + "Skip": "", "Sort_by_new": "", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/bg.json b/vue3/src/locales/bg.json index 93e9aacc0..2778beac9 100644 --- a/vue3/src/locales/bg.json +++ b/vue3/src/locales/bg.json @@ -281,6 +281,7 @@ "Show_as_header": "Показване като заглавка", "Single": "Единичен", "Size": "Размер", + "Skip": "", "Sort_by_new": "Сортиране по ново", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/ca.json b/vue3/src/locales/ca.json index efd2b7156..2eedfbcf0 100644 --- a/vue3/src/locales/ca.json +++ b/vue3/src/locales/ca.json @@ -365,6 +365,7 @@ "Show_as_header": "Mostreu com a títol", "Single": "Únic/a", "Size": "Mida", + "Skip": "", "Social_Authentication": "Identificació amb Xarxes Socials", "Sort_by_new": "Ordenar a partir del més nou", "Space": "", diff --git a/vue3/src/locales/cs.json b/vue3/src/locales/cs.json index 34cf2582f..5f0c4f49d 100644 --- a/vue3/src/locales/cs.json +++ b/vue3/src/locales/cs.json @@ -360,6 +360,7 @@ "Show_as_header": "Nastav jako nadpis", "Single": "Jednoduchý", "Size": "Velikost", + "Skip": "", "Social_Authentication": "Přihlašování pomocí účtů sociálních sítí", "Sort_by_new": "Seřadit od nejnovějšího", "Space": "", diff --git a/vue3/src/locales/da.json b/vue3/src/locales/da.json index 62ab7f5dd..2d82893a4 100644 --- a/vue3/src/locales/da.json +++ b/vue3/src/locales/da.json @@ -365,6 +365,7 @@ "Show_as_header": "Vis som rubrik", "Single": "Enkel", "Size": "Størrelse", + "Skip": "", "Social_Authentication": "Social authenticering", "Sort_by_new": "Sorter efter nylige", "Space": "", diff --git a/vue3/src/locales/de.json b/vue3/src/locales/de.json index 84f07ad71..a7c962d2a 100644 --- a/vue3/src/locales/de.json +++ b/vue3/src/locales/de.json @@ -503,6 +503,7 @@ "Show_as_header": "Als Überschrift", "Single": "Einzeln", "Size": "Größe", + "Skip": "Überspringen", "Social_Authentication": "Login über Drittanbieter", "Sort_by_new": "Nach Neueste sortieren", "Source": "Quelle", diff --git a/vue3/src/locales/el.json b/vue3/src/locales/el.json index 7dba750d5..f37ec827f 100644 --- a/vue3/src/locales/el.json +++ b/vue3/src/locales/el.json @@ -365,6 +365,7 @@ "Show_as_header": "Εμφάνιση ως κεφαλίδα", "Single": "Ενικός", "Size": "Μέγεθος", + "Skip": "", "Social_Authentication": "Ταυτοποίηση μέσω κοινωνικών δικτύων", "Sort_by_new": "Ταξινόμηση κατά νέο", "Space": "", diff --git a/vue3/src/locales/en.json b/vue3/src/locales/en.json index 93f3dc9fd..e3fff883d 100644 --- a/vue3/src/locales/en.json +++ b/vue3/src/locales/en.json @@ -501,6 +501,7 @@ "Show_as_header": "Show as header", "Single": "Single", "Size": "Size", + "Skip": "Skip", "Social_Authentication": "Social Authentication", "Sort_by_new": "Sort by new", "Source": "Source", diff --git a/vue3/src/locales/es.json b/vue3/src/locales/es.json index 915a1deea..b87fa6862 100644 --- a/vue3/src/locales/es.json +++ b/vue3/src/locales/es.json @@ -484,6 +484,7 @@ "Show_as_header": "Mostrar como encabezado", "Single": "Simple", "Size": "Tamaño", + "Skip": "", "Social_Authentication": "Autenticación Social", "Sort_by_new": "Ordenar por novedades", "SourceImportHelp": "Importar JSON en formato schema.org/recipe o páginas HTML con recetas en formato JSON+LD o microdatos.", diff --git a/vue3/src/locales/fi.json b/vue3/src/locales/fi.json index e8ec7ff3f..0a5cc3c04 100644 --- a/vue3/src/locales/fi.json +++ b/vue3/src/locales/fi.json @@ -353,6 +353,7 @@ "Show_as_header": "Näytä otsikkona", "Single": "Yksittäinen", "Size": "Koko", + "Skip": "", "Social_Authentication": "Sosiaalinen Todennus", "Sort_by_new": "Lajittele uusien mukaan", "Space": "", diff --git a/vue3/src/locales/fr.json b/vue3/src/locales/fr.json index bdfff3385..f542061b6 100644 --- a/vue3/src/locales/fr.json +++ b/vue3/src/locales/fr.json @@ -498,6 +498,7 @@ "Show_as_header": "Montrer comme en-tête", "Single": "Unique", "Size": "Taille", + "Skip": "", "Social_Authentication": "Authentification Sociale", "Sort_by_new": "Trier par nouveautés", "Source": "Source", diff --git a/vue3/src/locales/he.json b/vue3/src/locales/he.json index 66849f3d3..0a268d49d 100644 --- a/vue3/src/locales/he.json +++ b/vue3/src/locales/he.json @@ -365,6 +365,7 @@ "Show_as_header": "הצג בתור כותרת", "Single": "בודד", "Size": "גודל", + "Skip": "", "Social_Authentication": "אימות חברתי", "Sort_by_new": "סדר ע\"י חדש", "Space": "", diff --git a/vue3/src/locales/hr.json b/vue3/src/locales/hr.json index dd4cebadd..daa68ab33 100644 --- a/vue3/src/locales/hr.json +++ b/vue3/src/locales/hr.json @@ -365,6 +365,7 @@ "Show_as_header": "Prikaži kao zaglavlje", "Single": "Jedna", "Size": "Veličina", + "Skip": "", "Social_Authentication": "Autentifikacija putem društvenih mreža", "Sort_by_new": "Poredaj po novom", "Space": "", diff --git a/vue3/src/locales/hu.json b/vue3/src/locales/hu.json index 3cdf80578..de6c44f52 100644 --- a/vue3/src/locales/hu.json +++ b/vue3/src/locales/hu.json @@ -333,6 +333,7 @@ "Show_as_header": "Megjelenítés címként", "Single": "Egyetlen", "Size": "Méret", + "Skip": "", "Sort_by_new": "Rendezés legújabbak szerint", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/hy.json b/vue3/src/locales/hy.json index 5dcd4347e..71b352b53 100644 --- a/vue3/src/locales/hy.json +++ b/vue3/src/locales/hy.json @@ -150,6 +150,7 @@ "Shopping_list": "Գնումների ցուցակ", "Show_as_header": "Ցույց տալ որպես խորագիր", "Size": "", + "Skip": "", "Sort_by_new": "Տեսակավորել ըստ նորերի", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/id.json b/vue3/src/locales/id.json index 692a48e56..d457848eb 100644 --- a/vue3/src/locales/id.json +++ b/vue3/src/locales/id.json @@ -309,6 +309,7 @@ "Show_as_header": "Tampilkan sebagai tajuk", "Single": "", "Size": "Ukuran", + "Skip": "", "Social_Authentication": "", "Sort_by_new": "Urutkan berdasarkan baru", "Space": "", diff --git a/vue3/src/locales/is.json b/vue3/src/locales/is.json index 388b478d7..caad072ca 100644 --- a/vue3/src/locales/is.json +++ b/vue3/src/locales/is.json @@ -363,6 +363,7 @@ "Show_as_header": "", "Single": "", "Size": "", + "Skip": "", "Social_Authentication": "", "Sort_by_new": "", "Space": "", diff --git a/vue3/src/locales/it.json b/vue3/src/locales/it.json index ea8effa9a..3a8714971 100644 --- a/vue3/src/locales/it.json +++ b/vue3/src/locales/it.json @@ -500,6 +500,7 @@ "Show_as_header": "Mostra come intestazione", "Single": "Singolo", "Size": "Dimensione", + "Skip": "", "Social_Authentication": "Autenticazione social", "Sort_by_new": "Prima i nuovi", "Source": "Fonte", diff --git a/vue3/src/locales/lt.json b/vue3/src/locales/lt.json index c172b5f83..fe082c0b3 100644 --- a/vue3/src/locales/lt.json +++ b/vue3/src/locales/lt.json @@ -337,6 +337,7 @@ "Show_as_header": "Rodyti kaip antraštę", "Single": "", "Size": "", + "Skip": "", "Social_Authentication": "", "Sort_by_new": "Rūšiuoti pagal naujumą", "Space": "", diff --git a/vue3/src/locales/lv.json b/vue3/src/locales/lv.json index 01920028c..4b93d0afd 100644 --- a/vue3/src/locales/lv.json +++ b/vue3/src/locales/lv.json @@ -365,6 +365,7 @@ "Show_as_header": "", "Single": "", "Size": "", + "Skip": "", "Social_Authentication": "", "Sort_by_new": "", "Space": "", diff --git a/vue3/src/locales/nb_NO.json b/vue3/src/locales/nb_NO.json index 2abf68f9d..715e25266 100644 --- a/vue3/src/locales/nb_NO.json +++ b/vue3/src/locales/nb_NO.json @@ -347,6 +347,7 @@ "Show_as_header": "Vis som overskrift", "Single": "", "Size": "Størrelse", + "Skip": "", "Social_Authentication": "", "Sort_by_new": "Sorter etter nyest", "Space": "", diff --git a/vue3/src/locales/nl.json b/vue3/src/locales/nl.json index 7c2fa1e62..c07caf685 100644 --- a/vue3/src/locales/nl.json +++ b/vue3/src/locales/nl.json @@ -501,6 +501,7 @@ "Show_as_header": "Toon als koptekst", "Single": "Enkele", "Size": "Grootte", + "Skip": "", "Social_Authentication": "Authenticeren met sociale media-account", "Sort_by_new": "Sorteer op nieuw", "Source": "Bron", diff --git a/vue3/src/locales/pl.json b/vue3/src/locales/pl.json index 9abdcd30b..80601f252 100644 --- a/vue3/src/locales/pl.json +++ b/vue3/src/locales/pl.json @@ -391,6 +391,7 @@ "Show_as_header": "Pokaż jako nagłówek", "Single": "Pojedynczy", "Size": "Rozmiar", + "Skip": "", "Social_Authentication": "Uwierzytelnianie społecznościowe", "Sort_by_new": "Sortuj według nowych", "Space": "", diff --git a/vue3/src/locales/pt.json b/vue3/src/locales/pt.json index ffc5b5384..a62f17e82 100644 --- a/vue3/src/locales/pt.json +++ b/vue3/src/locales/pt.json @@ -299,6 +299,7 @@ "Show_Week_Numbers": "Mostrar números das semanas?", "Show_as_header": "Mostrar como cabeçalho", "Size": "Tamanho", + "Skip": "", "Sort_by_new": "Ordenar por mais recente", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/pt_BR.json b/vue3/src/locales/pt_BR.json index 1abfec4ea..6da738bb7 100644 --- a/vue3/src/locales/pt_BR.json +++ b/vue3/src/locales/pt_BR.json @@ -439,6 +439,7 @@ "Show_as_header": "Mostrar como título", "Single": "Simples", "Size": "Tamanho", + "Skip": "", "Social_Authentication": "Autenticação social", "Sort_by_new": "Ordenar por novos", "Space": "", diff --git a/vue3/src/locales/ro.json b/vue3/src/locales/ro.json index f0466993b..ca433f7b7 100644 --- a/vue3/src/locales/ro.json +++ b/vue3/src/locales/ro.json @@ -321,6 +321,7 @@ "Show_as_header": "Afișare ca antet", "Single": "Singur", "Size": "Marime", + "Skip": "", "Social_Authentication": "Autentificare socială", "Sort_by_new": "Sortare după nou", "Space": "", diff --git a/vue3/src/locales/ru.json b/vue3/src/locales/ru.json index bfc395cf8..7c0a2214b 100644 --- a/vue3/src/locales/ru.json +++ b/vue3/src/locales/ru.json @@ -498,6 +498,7 @@ "Show_as_header": "Показывать как заголовок", "Single": "Одиночный", "Size": "Размер", + "Skip": "", "Social_Authentication": "Социальная аутентификация", "Sort_by_new": "Сортировка по новизне", "Source": "Источник", diff --git a/vue3/src/locales/sl.json b/vue3/src/locales/sl.json index 9780451a7..6fb3a883d 100644 --- a/vue3/src/locales/sl.json +++ b/vue3/src/locales/sl.json @@ -500,6 +500,7 @@ "Show_as_header": "Prikaži kot glavo", "Single": "Ena", "Size": "Velikost", + "Skip": "", "Social_Authentication": "Socialna avtentikacija", "Sort_by_new": "Razvrsti po novih", "Source": "Vir", diff --git a/vue3/src/locales/sv.json b/vue3/src/locales/sv.json index dfb5bb6a6..10e62f6b1 100644 --- a/vue3/src/locales/sv.json +++ b/vue3/src/locales/sv.json @@ -402,6 +402,7 @@ "Show_as_header": "Visa som rubrik", "Single": "Enstaka", "Size": "Storlek", + "Skip": "", "Social_Authentication": "Social autentisering", "Sort_by_new": "Sortera efter ny", "Space": "", diff --git a/vue3/src/locales/tr.json b/vue3/src/locales/tr.json index 6d8fcf646..167eb001a 100644 --- a/vue3/src/locales/tr.json +++ b/vue3/src/locales/tr.json @@ -365,6 +365,7 @@ "Show_as_header": "Başlık olarak göster", "Single": "Tek", "Size": "Boyut", + "Skip": "", "Social_Authentication": "Sosyal Kimlik Doğrulama", "Sort_by_new": "Yeniye göre sırala", "Space": "", diff --git a/vue3/src/locales/uk.json b/vue3/src/locales/uk.json index 0d6775bad..01fac0ffc 100644 --- a/vue3/src/locales/uk.json +++ b/vue3/src/locales/uk.json @@ -323,6 +323,7 @@ "Show_as_header": "Показати як заголовок", "Single": "", "Size": "Розмір", + "Skip": "", "Sort_by_new": "Сортувати за новими", "Space": "", "SpaceHelp": "", diff --git a/vue3/src/locales/zh_Hans.json b/vue3/src/locales/zh_Hans.json index 423c04a46..4b1134747 100644 --- a/vue3/src/locales/zh_Hans.json +++ b/vue3/src/locales/zh_Hans.json @@ -365,6 +365,7 @@ "Show_as_header": "显示标题", "Single": "单个", "Size": "大小", + "Skip": "", "Social_Authentication": "社交认证", "Sort_by_new": "按新旧排序", "Space": "", diff --git a/vue3/src/locales/zh_Hant.json b/vue3/src/locales/zh_Hant.json index e4c8e3c74..2798b75ed 100644 --- a/vue3/src/locales/zh_Hant.json +++ b/vue3/src/locales/zh_Hant.json @@ -499,6 +499,7 @@ "Show_as_header": "顯示為標題", "Single": "單一", "Size": "大小", + "Skip": "", "Social_Authentication": "社交認證", "Sort_by_new": "按最新排序", "Source": "來源", diff --git a/vue3/src/openapi/apis/ApiApi.ts b/vue3/src/openapi/apis/ApiApi.ts index 5472e21cf..4fd321bb4 100644 --- a/vue3/src/openapi/apis/ApiApi.ts +++ b/vue3/src/openapi/apis/ApiApi.ts @@ -1803,6 +1803,11 @@ export interface ApiSpaceRetrieveRequest { id: number; } +export interface ApiSpaceUpdateRequest { + id: number; + space?: Omit; +} + export interface ApiStepCreateRequest { step: Omit; } @@ -13265,6 +13270,46 @@ export class ApiApi extends runtime.BaseAPI { return await response.value(); } + /** + * logs request counts to redis cache total/per user/ + */ + async apiSpaceUpdateRaw(requestParameters: ApiSpaceUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSpaceUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKeyAuth authentication + } + + const response = await this.request({ + path: `/api/space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SpaceToJSON(requestParameters['space']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SpaceFromJSON(jsonValue)); + } + + /** + * logs request counts to redis cache total/per user/ + */ + async apiSpaceUpdate(requestParameters: ApiSpaceUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSpaceUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + /** * logs request counts to redis cache total/per user/ */ diff --git a/vue3/src/pages/SettingsPage.vue b/vue3/src/pages/SettingsPage.vue index a7b1df64c..a796512a1 100644 --- a/vue3/src/pages/SettingsPage.vue +++ b/vue3/src/pages/SettingsPage.vue @@ -13,9 +13,7 @@ {{ $t('Search') }} Space - {{ $t('YourSpaces') }} {{ $t('SpaceSettings') }} - {{ $t('SpaceMembers') }} {{ $t('Open_Data_Import') }} {{ $t('Export') }} diff --git a/vue3/src/pages/WelcomePage.vue b/vue3/src/pages/WelcomePage.vue index a0dff9cff..b26b7c041 100644 --- a/vue3/src/pages/WelcomePage.vue +++ b/vue3/src/pages/WelcomePage.vue @@ -39,6 +39,7 @@ @@ -194,8 +195,10 @@ onMounted(() => { function finishWelcome(target: RouteLocationRaw = {name: 'StartPage'}) { if (space.value) { space.value.spaceSetupCompleted = true + loading.value = true updateSpace().then(() => { router.push(target) + loading.value = false }) } else { useMessageStore().addMessage(MessageType.ERROR, "Space not loaded yet", 5000)