+
+
+
![]()
+
{{ i18n.ts.nothing }}
+
+
+
+
{{ i18n.ts.add }}
-
-
-
- {{ antenna.name }}
-
-
+
@@ -18,19 +23,31 @@
-
-
diff --git a/packages/frontend/src/pages/my-lists/index.vue b/packages/frontend/src/pages/my-lists/index.vue
index cee241c489..0f59ca0b36 100644
--- a/packages/frontend/src/pages/my-lists/index.vue
+++ b/packages/frontend/src/pages/my-lists/index.vue
@@ -3,38 +3,43 @@
+
+
+
![]()
+
{{ i18n.ts.nothing }}
+
+
+
{{ i18n.ts.createList }}
-
-
-
- {{ list.name }}
-
-
-
-
+
+
+ {{ list.name }}
+
+
+
diff --git a/packages/frontend/src/const.ts b/packages/frontend/src/const.ts
index ad7fa372e9..1d883c038e 100644
--- a/packages/frontend/src/const.ts
+++ b/packages/frontend/src/const.ts
@@ -57,6 +57,9 @@ export const ROLE_POLICIES = [
'ltlAvailable',
'canPublicNote',
'canInvite',
+ 'inviteLimit',
+ 'inviteLimitCycle',
+ 'inviteExpirationTime',
'canManageCustomEmojis',
'canSearchNotes',
'canHideAds',
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index 226eb8d026..e91f65b5d5 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -80,7 +80,7 @@ const menuDef = $computed(() => [{
}, ...(instance.disableRegistration ? [{
type: 'button',
icon: 'ti ti-user-plus',
- text: i18n.ts.invite,
+ text: i18n.ts.createInviteCode,
action: invite,
}] : [])],
}, {
@@ -95,6 +95,11 @@ const menuDef = $computed(() => [{
text: i18n.ts.users,
to: '/admin/users',
active: currentPage?.route.name === 'users',
+ }, {
+ icon: 'ti ti-user-plus',
+ text: i18n.ts.invite,
+ to: '/admin/invites',
+ active: currentPage?.route.name === 'invites',
}, {
icon: 'ti ti-badges',
text: i18n.ts.roles,
@@ -240,10 +245,10 @@ provideMetadataReceiver((info) => {
});
const invite = () => {
- os.api('invite').then(x => {
+ os.api('admin/invite/create').then(x => {
os.alert({
type: 'info',
- text: x.code,
+ text: x?.[0].code,
});
}).catch(err => {
os.alert({
diff --git a/packages/frontend/src/pages/admin/invites.vue b/packages/frontend/src/pages/admin/invites.vue
new file mode 100644
index 0000000000..70a9c93713
--- /dev/null
+++ b/packages/frontend/src/pages/admin/invites.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+ {{ i18n.ts.createInviteCode }}
+
+
+
+ {{ i18n.ts.noExpirationDate }}
+
+
+ {{ i18n.ts.expirationDate }}
+
+
+ {{ i18n.ts.createCount }}
+
+ {{ i18n.ts.create }}
+
+
+
+
+
+ {{ i18n.ts.state }}
+
+
+
+
+
+
+ {{ i18n.ts.sort }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue
index 02a2d4366a..7fe5624fb5 100644
--- a/packages/frontend/src/pages/admin/roles.editor.vue
+++ b/packages/frontend/src/pages/admin/roles.editor.vue
@@ -171,6 +171,65 @@