add: choose boost visibility when clicking boost

Closes transfem-org/Sharkey#195
This commit is contained in:
Mar0xy 2023-12-04 00:19:34 +01:00
parent 10b27ad972
commit fb75282ea8
No known key found for this signature in database
GPG Key ID: 56569BBE47D2C828
6 changed files with 253 additions and 37 deletions

View File

@ -114,7 +114,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
v-on:click.stop v-on:click.stop
@mousedown="renoted ? undoRenote(appearNote) : renote()" @mousedown="renoted ? undoRenote(appearNote) : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="appearNote.renoteCount > 0" :class="$style.footerButtonCount">{{ appearNote.renoteCount }}</p> <p v-if="appearNote.renoteCount > 0" :class="$style.footerButtonCount">{{ appearNote.renoteCount }}</p>
@ -379,7 +379,43 @@ function smallerVisibility(a: Visibility | string, b: Visibility | string): Visi
return 'public'; return 'public';
} }
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: Visibility | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -411,18 +447,17 @@ function renote() {
} }
const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility; const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility;
const localOnly = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly; const localOnlySetting = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly;
let visibility = appearNote.visibility; let noteVisibility = visibility === 'local' ? smallerVisibility(appearNote.visibility, configuredVisibility) : smallerVisibility(visibility, configuredVisibility);
visibility = smallerVisibility(visibility, configuredVisibility);
if (appearNote.channel?.isSensitive) { if (appearNote.channel?.isSensitive) {
visibility = smallerVisibility(visibility, 'home'); noteVisibility = smallerVisibility(visibility === 'local' ? appearNote.visibility : visibility, 'home');
} }
if (!props.mock) { if (!props.mock) {
os.api('notes/create', { os.api('notes/create', {
localOnly, localOnly: visibility === 'local' ? true : localOnlySetting,
visibility, visibility: noteVisibility,
renoteId: appearNote.id, renoteId: appearNote.id,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);

View File

@ -124,7 +124,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:class="$style.noteFooterButton" :class="$style.noteFooterButton"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
@mousedown="renoted ? undoRenote() : renote()" @mousedown="renoted ? undoRenote() : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="appearNote.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ appearNote.renoteCount }}</p> <p v-if="appearNote.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ appearNote.renoteCount }}</p>
@ -427,7 +427,43 @@ function smallerVisibility(a: Visibility | string, b: Visibility | string): Visi
return 'public'; return 'public';
} }
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: Visibility | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -457,17 +493,16 @@ function renote() {
} }
const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility; const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility;
const localOnly = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly; const localOnlySetting = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly;
let visibility = appearNote.visibility; let noteVisibility = visibility === 'local' ? smallerVisibility(appearNote.visibility, configuredVisibility) : smallerVisibility(visibility, configuredVisibility);
visibility = smallerVisibility(visibility, configuredVisibility);
if (appearNote.channel?.isSensitive) { if (appearNote.channel?.isSensitive) {
visibility = smallerVisibility(visibility, 'home'); noteVisibility = smallerVisibility(visibility === 'local' ? appearNote.visibility : visibility, 'home');
} }
os.api('notes/create', { os.api('notes/create', {
localOnly, localOnly: visibility === 'local' ? true : localOnlySetting,
visibility, visibility: noteVisibility,
renoteId: appearNote.id, renoteId: appearNote.id,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);

View File

@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:class="$style.noteFooterButton" :class="$style.noteFooterButton"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
@mousedown="renoted ? undoRenote() : renote()" @mousedown="renoted ? undoRenote() : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="note.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ note.renoteCount }}</p> <p v-if="note.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ note.renoteCount }}</p>
@ -252,7 +252,43 @@ watch(() => props.expandAllCws, (expandAllCws) => {
let replies: Misskey.entities.Note[] = $ref([]); let replies: Misskey.entities.Note[] = $ref([]);
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: 'public' | 'home' | 'followers' | 'specified' | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -283,6 +319,8 @@ function renote() {
os.api('notes/create', { os.api('notes/create', {
renoteId: props.note.id, renoteId: props.note.id,
localOnly: visibility === 'local' ? true : false,
visibility: visibility === 'local' ? props.note.visibility : visibility,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);
renoted.value = true; renoted.value = true;

View File

@ -116,7 +116,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
v-on:click.stop v-on:click.stop
@mousedown="renoted ? undoRenote(appearNote) : renote()" @mousedown="renoted ? undoRenote(appearNote) : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="appearNote.renoteCount > 0" :class="$style.footerButtonCount">{{ appearNote.renoteCount }}</p> <p v-if="appearNote.renoteCount > 0" :class="$style.footerButtonCount">{{ appearNote.renoteCount }}</p>
@ -380,7 +380,43 @@ function smallerVisibility(a: Visibility | string, b: Visibility | string): Visi
return 'public'; return 'public';
} }
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: Visibility | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -412,18 +448,17 @@ function renote() {
} }
const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility; const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility;
const localOnly = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly; const localOnlySetting = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly;
let visibility = appearNote.visibility; let noteVisibility = visibility === 'local' ? smallerVisibility(appearNote.visibility, configuredVisibility) : smallerVisibility(visibility, configuredVisibility);
visibility = smallerVisibility(visibility, configuredVisibility);
if (appearNote.channel?.isSensitive) { if (appearNote.channel?.isSensitive) {
visibility = smallerVisibility(visibility, 'home'); noteVisibility = smallerVisibility(visibility === 'local' ? appearNote.visibility : visibility, 'home');
} }
if (!props.mock) { if (!props.mock) {
os.api('notes/create', { os.api('notes/create', {
localOnly, localOnly: visibility === 'local' ? true : localOnlySetting,
visibility, visibility: noteVisibility,
renoteId: appearNote.id, renoteId: appearNote.id,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);

View File

@ -132,7 +132,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:class="$style.noteFooterButton" :class="$style.noteFooterButton"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
@mousedown="renoted ? undoRenote() : renote()" @mousedown="renoted ? undoRenote() : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="appearNote.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ appearNote.renoteCount }}</p> <p v-if="appearNote.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ appearNote.renoteCount }}</p>
@ -435,7 +435,43 @@ function smallerVisibility(a: Visibility | string, b: Visibility | string): Visi
return 'public'; return 'public';
} }
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: Visibility | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -465,17 +501,16 @@ function renote() {
} }
const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility; const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility;
const localOnly = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly; const localOnlySetting = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly;
let visibility = appearNote.visibility; let noteVisibility = visibility === 'local' ? smallerVisibility(appearNote.visibility, configuredVisibility) : smallerVisibility(visibility, configuredVisibility);
visibility = smallerVisibility(visibility, configuredVisibility);
if (appearNote.channel?.isSensitive) { if (appearNote.channel?.isSensitive) {
visibility = smallerVisibility(visibility, 'home'); noteVisibility = smallerVisibility(visibility === 'local' ? appearNote.visibility : visibility, 'home');
} }
os.api('notes/create', { os.api('notes/create', {
localOnly, localOnly: visibility === 'local' ? true : localOnlySetting,
visibility, visibility: noteVisibility,
renoteId: appearNote.id, renoteId: appearNote.id,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);

View File

@ -39,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
class="_button" class="_button"
:class="$style.noteFooterButton" :class="$style.noteFooterButton"
:style="renoted ? 'color: var(--accent) !important;' : ''" :style="renoted ? 'color: var(--accent) !important;' : ''"
@mousedown="renoted ? undoRenote() : renote()" @mousedown="renoted ? undoRenote() : boostVisibility()"
> >
<i class="ph-rocket-launch ph-bold ph-lg"></i> <i class="ph-rocket-launch ph-bold ph-lg"></i>
<p v-if="note.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ note.renoteCount }}</p> <p v-if="note.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ note.renoteCount }}</p>
@ -261,7 +261,43 @@ watch(() => props.expandAllCws, (expandAllCws) => {
let replies: Misskey.entities.Note[] = $ref([]); let replies: Misskey.entities.Note[] = $ref([]);
function renote() { function boostVisibility() {
os.popupMenu([
{
type: 'button',
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
text: i18n.ts._visibility['public'],
action: () => {
renote('public');
},
},
{
type: 'button',
icon: 'ph-house ph-bold ph-lg',
text: i18n.ts._visibility['home'],
action: () => {
renote('home');
},
},
{
type: 'button',
icon: 'ph-lock ph-bold ph-lg',
text: i18n.ts._visibility['followers'],
action: () => {
renote('followers');
},
},
{
type: 'button',
icon: 'ph-planet ph-bold ph-lg',
text: i18n.ts._timelines.local,
action: () => {
renote('local');
},
}], renoteButton.value);
}
function renote(visibility: 'public' | 'home' | 'followers' | 'specified' | 'local') {
pleaseLogin(); pleaseLogin();
showMovedDialog(); showMovedDialog();
@ -292,6 +328,8 @@ function renote() {
os.api('notes/create', { os.api('notes/create', {
renoteId: props.note.id, renoteId: props.note.id,
localOnly: visibility === 'local' ? true : false,
visibility: visibility === 'local' ? props.note.visibility : visibility,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);
renoted.value = true; renoted.value = true;