diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a3d9a1ca..10b1cdb37 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -131,6 +131,7 @@
- ワードミュートのドキュメントを追加
- クライアントのデザインの調整
- 依存関係の更新
+- /share のクエリでリプライやファイル等の情報を渡せるように
### Bugfixes
- チャンネルを作成しているとアカウントを削除できないのを修正
diff --git a/src/client/components/post-form.vue b/src/client/components/post-form.vue
index a1d89d2a2..816a69e73 100644
--- a/src/client/components/post-form.vue
+++ b/src/client/components/post-form.vue
@@ -117,11 +117,28 @@ export default defineComponent({
type: String,
required: false
},
+ initialVisibility: {
+ type: String,
+ required: false
+ },
+ initialFiles: {
+ type: Array,
+ required: false
+ },
+ initialLocalOnly: {
+ type: Boolean,
+ required: false
+ },
+ visibleUsers: {
+ type: Array,
+ required: false,
+ default: () => []
+ },
initialNote: {
type: Object,
required: false
},
- instant: {
+ share: {
type: Boolean,
required: false,
default: false
@@ -150,8 +167,7 @@ export default defineComponent({
showPreview: false,
cw: null,
localOnly: this.$store.state.rememberNoteVisibility ? this.$store.state.localOnly : this.$store.state.defaultNoteLocalOnly,
- visibility: this.$store.state.rememberNoteVisibility ? this.$store.state.visibility : this.$store.state.defaultNoteVisibility,
- visibleUsers: [],
+ visibility: (this.$store.state.rememberNoteVisibility ? this.$store.state.visibility : this.$store.state.defaultNoteVisibility) as typeof noteVisibilities[number],
autocomplete: null,
draghover: false,
quoteId: null,
@@ -246,6 +262,18 @@ export default defineComponent({
this.text = this.initialText;
}
+ if (this.initialVisibility) {
+ this.visibility = this.initialVisibility;
+ }
+
+ if (this.initialFiles) {
+ this.files = this.initialFiles;
+ }
+
+ if (typeof this.initialLocalOnly === 'boolean') {
+ this.localOnly = this.initialLocalOnly;
+ }
+
if (this.mention) {
this.text = this.mention.host ? `@${this.mention.username}@${toASCII(this.mention.host)}` : `@${this.mention.username}`;
this.text += ' ';
@@ -321,7 +349,7 @@ export default defineComponent({
this.$nextTick(() => {
// 書きかけの投稿を復元
- if (!this.instant && !this.mention && !this.specified) {
+ if (!this.share && !this.mention && !this.specified) {
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftKey];
if (draft) {
this.text = draft.data.text;
@@ -582,8 +610,6 @@ export default defineComponent({
},
saveDraft() {
- if (this.instant) return;
-
const data = JSON.parse(localStorage.getItem('drafts') || '{}');
data[this.draftKey] = {
diff --git a/src/client/pages/share.vue b/src/client/pages/share.vue
index 67e598fa8..70a9661dd 100644
--- a/src/client/pages/share.vue
+++ b/src/client/pages/share.vue
@@ -1,22 +1,38 @@