fix inconsistent relation badges between user profile and user info block

This commit is contained in:
Hazelnoot 2024-10-26 11:31:11 -04:00
parent 55df1ad10f
commit b034e1db67
3 changed files with 98 additions and 28 deletions

36
locales/index.d.ts vendored
View file

@ -5353,6 +5353,10 @@ export interface Locale extends ILocale {
* *
*/ */
"silenceDescription": string; "silenceDescription": string;
/**
* New
*/
"new": string;
}; };
"_initialAccountSetting": { "_initialAccountSetting": {
/** /**
@ -8442,6 +8446,10 @@ export interface Locale extends ILocale {
* *
*/ */
"pleaseLogin": string; "pleaseLogin": string;
/**
* Allowed
*/
"allowed": string;
}; };
"_antennaSources": { "_antennaSources": {
/** /**
@ -10603,6 +10611,30 @@ export interface Locale extends ILocale {
* Mutuals * Mutuals
*/ */
"mutuals": string; "mutuals": string;
/**
* Private account
*/
"isLocked": string;
/**
* Administrator
*/
"isAdmin": string;
/**
* Bot user
*/
"isBot": string;
/**
* Open
*/
"open": string;
/**
* Destination address
*/
"emailDestination": string;
/**
* Date
*/
"date": string;
/** /**
* Quoted. * Quoted.
*/ */
@ -10964,6 +10996,10 @@ export interface Locale extends ILocale {
* Blocking you * Blocking you
*/ */
"blockingYou": string; "blockingYou": string;
/**
* Show warning when opening external URLs
*/
"warnExternalUrl": string;
"_mfm": { "_mfm": {
/** /**
* This is not a widespread feature, it may not display properly on most other fedi software, including other Misskey forks * This is not a widespread feature, it may not display properly on most other fedi software, including other Misskey forks

View file

@ -11,7 +11,15 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkA :class="$style.name" :to="userPage(user)"><MkUserName :user="user" :nowrap="false"/></MkA> <MkA :class="$style.name" :to="userPage(user)"><MkUserName :user="user" :nowrap="false"/></MkA>
<p :class="$style.username"><MkAcct :user="user"/></p> <p :class="$style.username"><MkAcct :user="user"/></p>
</div> </div>
<span v-if="$i && $i.id !== user.id && user.isFollowed" :class="$style.followed">{{ i18n.ts.followsYou }}</span> <ul v-if="$i && $i.id != user.id" :class="$style.infoBadges">
<li v-if="user.isFollowed && user.isFollowing">{{ i18n.ts.mutuals }}</li>
<li v-else-if="user.isFollowing">{{ i18n.ts.following }}</li>
<li v-else-if="user.isFollowed">{{ i18n.ts.followsYou }}</li>
<li v-if="user.isMuted">{{ i18n.ts.muted }}</li>
<li v-if="user.isRenoteMuted">{{ i18n.ts.renoteMuted }}</li>
<li v-if="user.isBlocking">{{ i18n.ts.blocked }}</li>
<li v-if="user.isBlocked && $i.isModerator">{{ i18n.ts.blockingYou }}</li>
</ul>
<div :class="$style.description"> <div :class="$style.description">
<div v-if="user.description" :class="$style.mfm"> <div v-if="user.description" :class="$style.mfm">
<Mfm :text="user.description" :isBlock="true" :author="user"/> <Mfm :text="user.description" :isBlock="true" :author="user"/>
@ -144,4 +152,30 @@ defineProps<{
top: 8px; top: 8px;
right: 8px; right: 8px;
} }
.infoBadges {
position: absolute;
top: 12px;
left: 12px;
display: flex;
flex-direction: row;
padding: 0;
margin: 0;
> * {
padding: 4px 8px;
color: #fff;
background: rgba(0, 0, 0, 0.7);
font-size: 0.7em;
border-radius: var(--radius-sm);
list-style-type: none;
margin-left: 0;
}
> :not(:first-child) {
margin-left: 8px;
}
}
</style> </style>

View file

@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</button> </button>
</div> </div>
</div> </div>
<ul v-if="$i && $i.id != user.id" class="info-badges"> <ul v-if="$i && $i.id != user.id" :class="$style.infoBadges">
<li v-if="user.isFollowed && user.isFollowing">{{ i18n.ts.mutuals }}</li> <li v-if="user.isFollowed && user.isFollowing">{{ i18n.ts.mutuals }}</li>
<li v-else-if="user.isFollowing">{{ i18n.ts.following }}</li> <li v-else-if="user.isFollowing">{{ i18n.ts.following }}</li>
<li v-else-if="user.isFollowed">{{ i18n.ts.followsYou }}</li> <li v-else-if="user.isFollowed">{{ i18n.ts.followsYou }}</li>
@ -469,32 +469,6 @@ onUnmounted(() => {
background: linear-gradient(transparent, rgba(#000, 0.7)); background: linear-gradient(transparent, rgba(#000, 0.7));
} }
> .info-badges {
position: absolute;
top: 12px;
left: 12px;
display: flex;
flex-direction: row;
padding: 0;
margin: 0;
> * {
padding: 4px 8px;
color: #fff;
background: rgba(0, 0, 0, 0.7);
font-size: 0.7em;
border-radius: var(--radius-sm);
list-style-type: none;
margin-left: 0;
}
> :not(:first-child) {
margin-left: 8px;
}
}
> .actions { > .actions {
position: absolute; position: absolute;
top: 12px; top: 12px;
@ -849,4 +823,30 @@ onUnmounted(() => {
.pinnedNote:not(:last-child) { .pinnedNote:not(:last-child) {
border-bottom: solid 0.5px var(--divider); border-bottom: solid 0.5px var(--divider);
} }
.infoBadges {
position: absolute;
top: 12px;
left: 12px;
display: flex;
flex-direction: row;
padding: 0;
margin: 0;
> * {
padding: 4px 8px;
color: #fff;
background: rgba(0, 0, 0, 0.7);
font-size: 0.7em;
border-radius: var(--radius-sm);
list-style-type: none;
margin-left: 0;
}
> :not(:first-child) {
margin-left: 8px;
}
}
</style> </style>