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 @@
+
+
+
+
+ {{ $t('Recipes') }}
+ {{ $n(props.space.recipeCount) }} / {{ props.space.maxRecipes == 0 ? '∞' : $n(props.space.maxRecipes) }}
+
+
+
+
+
+
+ {{ $t('Users') }}
+ {{ $n(props.space.userCount) }} / {{ props.space.maxUsers == 0 ? '∞' : $n(props.space.maxUsers) }}
+
+
+
+
+
+ {{ $t('Files') }}
+ {{ $n(Math.round(props.space.fileSizeMb)) }} /
+ {{ props.space.maxFileStorageMb == 0 ? '∞' : $n(props.space.maxFileStorageMb) }}
+ MB
+
+ {{ $t('file_upload_disabled') }}
+
+
+
+
+
+
+ {{ $t('MonthlyCredits') }}
+ {{ $n(props.space.aiMonthlyCreditsUsed) }} / {{ $n(props.space.aiCreditsMonthly) }} {{ $t('Credits') }}
+
+
+
+
+
+
+
+ {{ $t('AiCreditsBalance') }}
+ {{ $n(props.space.aiCreditsBalance) }} {{ $t('Credits') }}
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+ {{ $t('ThankYou') }}!
+
+
+
+ {{ $t('ManageSubscription') }}
+
+
+
+
+ {{ $t('ThanksTextHosted') }}
+
+
+
+
+
+
+
+ {{ $t('ThankYou') }}!
+
+
+
+ GitHub Sponsors
+
+
+
+
+
+ {{ $t('ThanksTextSelfhosted') }}
+
+
+
+
+
+
+
+
\ 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 @@
+ {{ $t('Skip') }}
{{ $t('Next') }}
@@ -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)