summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2024-05-04 13:21:40 +0900
committerGitHub <noreply@github.com>2024-05-04 13:21:40 +0900
commit053e7626e41a7001a49287b2d51933151efaf4c5 (patch)
tree8cccf7a61be0f87b0396ba1f04f3e1b3af400514
parentenhance(backend): ドライブのファイルがNSFWかどうか個別に連... (diff)
downloadsharkey-053e7626e41a7001a49287b2d51933151efaf4c5.tar.gz
sharkey-053e7626e41a7001a49287b2d51933151efaf4c5.tar.bz2
sharkey-053e7626e41a7001a49287b2d51933151efaf4c5.zip
enhance(frontend_ais): PostForm系の設定項目を追加 (#13788)
* enhance(frontend_ais): PostForm系の設定項目を追加 * Update Changelog
-rw-r--r--CHANGELOG.md1
-rw-r--r--packages/frontend/src/components/MkAsUi.vue4
-rw-r--r--packages/frontend/src/scripts/aiscript/ui.ts62
3 files changed, 35 insertions, 32 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f3ae412ef..c54fa6ed78 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -38,6 +38,7 @@
- Enhance: フォローするかどうかの確認ダイアログを出せるように
- Enhance: Playを手動でリロードできるように
- Enhance: 通報のコメント内のリンクをクリックした際、ウィンドウで開くように
+- Enhance: `Ui:C:postForm` および `Ui:C:postFormButton` に `localOnly` と `visibility` を設定できるように
- Chore: AiScriptを0.18.0にバージョンアップ
- Fix: 一部のページ内リンクが正しく動作しない問題を修正
- Fix: 周年の実績が閏年を考慮しない問題を修正
diff --git a/packages/frontend/src/components/MkAsUi.vue b/packages/frontend/src/components/MkAsUi.vue
index 5eb77740be..18e8e7542e 100644
--- a/packages/frontend/src/components/MkAsUi.vue
+++ b/packages/frontend/src/components/MkAsUi.vue
@@ -44,6 +44,8 @@ SPDX-License-Identifier: AGPL-3.0-only
:instant="true"
:initialText="c.form?.text"
:initialCw="c.form?.cw"
+ :initialVisibility="c.form?.visibility"
+ :initialLocalOnly="c.form?.localOnly"
/>
</div>
<MkFolder v-else-if="c.type === 'folder'" :defaultOpen="c.opened">
@@ -111,6 +113,8 @@ function openPostForm() {
os.post({
initialText: form.text,
initialCw: form.cw,
+ initialVisibility: form.visibility,
+ initialLocalOnly: form.localOnly,
instant: true,
});
}
diff --git a/packages/frontend/src/scripts/aiscript/ui.ts b/packages/frontend/src/scripts/aiscript/ui.ts
index f2493264d3..fa3fcac2e7 100644
--- a/packages/frontend/src/scripts/aiscript/ui.ts
+++ b/packages/frontend/src/scripts/aiscript/ui.ts
@@ -6,6 +6,7 @@
import { utils, values } from '@syuilo/aiscript';
import { v4 as uuid } from 'uuid';
import { ref, Ref } from 'vue';
+import * as Misskey from 'misskey-js';
export type AsUiComponentBase = {
id: string;
@@ -115,23 +116,24 @@ export type AsUiFolder = AsUiComponentBase & {
opened?: boolean;
};
+type PostFormPropsForAsUi = {
+ text: string;
+ cw?: string;
+ visibility?: (typeof Misskey.noteVisibilities)[number];
+ localOnly?: boolean;
+};
+
export type AsUiPostFormButton = AsUiComponentBase & {
type: 'postFormButton';
text?: string;
primary?: boolean;
rounded?: boolean;
- form?: {
- text: string;
- cw?: string;
- };
+ form?: PostFormPropsForAsUi;
};
export type AsUiPostForm = AsUiComponentBase & {
type: 'postForm';
- form?: {
- text: string;
- cw?: string;
- };
+ form?: PostFormPropsForAsUi;
};
export type AsUiComponent = AsUiRoot | AsUiContainer | AsUiText | AsUiMfm | AsUiButton | AsUiButtons | AsUiSwitch | AsUiTextarea | AsUiTextInput | AsUiNumberInput | AsUiSelect | AsUiFolder | AsUiPostFormButton | AsUiPostForm;
@@ -447,6 +449,24 @@ function getFolderOptions(def: values.Value | undefined): Omit<AsUiFolder, 'id'
};
}
+function getPostFormProps(form: values.VObj): PostFormPropsForAsUi {
+ const text = form.value.get('text');
+ utils.assertString(text);
+ const cw = form.value.get('cw');
+ if (cw) utils.assertString(cw);
+ const visibility = form.value.get('visibility');
+ if (visibility) utils.assertString(visibility);
+ const localOnly = form.value.get('localOnly');
+ if (localOnly) utils.assertBoolean(localOnly);
+
+ return {
+ text: text.value,
+ cw: cw?.value,
+ visibility: (visibility?.value && (Misskey.noteVisibilities as readonly string[]).includes(visibility.value)) ? visibility.value as typeof Misskey.noteVisibilities[number] : undefined,
+ localOnly: localOnly?.value,
+ };
+}
+
function getPostFormButtonOptions(def: values.Value | undefined, call: (fn: values.VFn, args: values.Value[]) => Promise<values.Value>): Omit<AsUiPostFormButton, 'id' | 'type'> {
utils.assertObject(def);
@@ -459,22 +479,11 @@ function getPostFormButtonOptions(def: values.Value | undefined, call: (fn: valu
const form = def.value.get('form');
if (form) utils.assertObject(form);
- const getForm = () => {
- const text = form!.value.get('text');
- utils.assertString(text);
- const cw = form!.value.get('cw');
- if (cw) utils.assertString(cw);
- return {
- text: text.value,
- cw: cw?.value,
- };
- };
-
return {
text: text?.value,
primary: primary?.value,
rounded: rounded?.value,
- form: form ? getForm() : {
+ form: form ? getPostFormProps(form) : {
text: '',
},
};
@@ -486,19 +495,8 @@ function getPostFormOptions(def: values.Value | undefined, call: (fn: values.VFn
const form = def.value.get('form');
if (form) utils.assertObject(form);
- const getForm = () => {
- const text = form!.value.get('text');
- utils.assertString(text);
- const cw = form!.value.get('cw');
- if (cw) utils.assertString(cw);
- return {
- text: text.value,
- cw: cw?.value,
- };
- };
-
return {
- form: form ? getForm() : {
+ form: form ? getPostFormProps(form) : {
text: '',
},
};