feat: 送信したフォローリクエストを確認できるように (#14856)
* FEAT: Allow users to view pending follow requests they sent
This commit implements the `following/requests/sent` interface firstly
implemented on Firefish, and provides a UI interface to view the pending
follow requests users sent.
* ux: should not show follow requests tab when have no pending sent follow req
* fix default followreq tab
* fix default followreq tab
* restore missing hasPendingReceivedFollowRequest in navbar
* refactor
* use tabler icons
* tweak design
* Revert "ux: should not show follow requests tab when have no pending sent follow req"
This reverts commit e580b92c37
.
* Update Changelog
* Update Changelog
* change tab titles
---------
Co-authored-by: Lhc_fl <lhcfl@outlook.com>
Co-authored-by: Hazelnoot <acomputerdog@gmail.com>
This commit is contained in:
@@ -1504,6 +1504,8 @@ declare namespace entities {
|
||||
FollowingRequestsCancelResponse,
|
||||
FollowingRequestsListRequest,
|
||||
FollowingRequestsListResponse,
|
||||
FollowingRequestsSentRequest,
|
||||
FollowingRequestsSentResponse,
|
||||
FollowingRequestsRejectRequest,
|
||||
GalleryFeaturedRequest,
|
||||
GalleryFeaturedResponse,
|
||||
@@ -2018,6 +2020,12 @@ type FollowingRequestsListResponse = operations['following___requests___list']['
|
||||
// @public (undocumented)
|
||||
type FollowingRequestsRejectRequest = operations['following___requests___reject']['requestBody']['content']['application/json'];
|
||||
|
||||
// @public (undocumented)
|
||||
type FollowingRequestsSentRequest = operations['following___requests___sent']['requestBody']['content']['application/json'];
|
||||
|
||||
// @public (undocumented)
|
||||
type FollowingRequestsSentResponse = operations['following___requests___sent']['responses']['200']['content']['application/json'];
|
||||
|
||||
// @public (undocumented)
|
||||
type FollowingUpdateAllRequest = operations['following___update-all']['requestBody']['content']['application/json'];
|
||||
|
||||
|
@@ -2008,6 +2008,17 @@ declare module '../api.js' {
|
||||
credential?: string | null,
|
||||
): Promise<SwitchCaseResponseType<E, P>>;
|
||||
|
||||
/**
|
||||
* No description provided.
|
||||
*
|
||||
* **Credential required**: *Yes* / **Permission**: *read:following*
|
||||
*/
|
||||
request<E extends 'following/requests/sent', P extends Endpoints[E]['req']>(
|
||||
endpoint: E,
|
||||
params: P,
|
||||
credential?: string | null,
|
||||
): Promise<SwitchCaseResponseType<E, P>>;
|
||||
|
||||
/**
|
||||
* No description provided.
|
||||
*
|
||||
|
@@ -279,6 +279,8 @@ import type {
|
||||
FollowingRequestsCancelResponse,
|
||||
FollowingRequestsListRequest,
|
||||
FollowingRequestsListResponse,
|
||||
FollowingRequestsSentRequest,
|
||||
FollowingRequestsSentResponse,
|
||||
FollowingRequestsRejectRequest,
|
||||
GalleryFeaturedRequest,
|
||||
GalleryFeaturedResponse,
|
||||
@@ -761,6 +763,7 @@ export type Endpoints = {
|
||||
'following/requests/accept': { req: FollowingRequestsAcceptRequest; res: EmptyResponse };
|
||||
'following/requests/cancel': { req: FollowingRequestsCancelRequest; res: FollowingRequestsCancelResponse };
|
||||
'following/requests/list': { req: FollowingRequestsListRequest; res: FollowingRequestsListResponse };
|
||||
'following/requests/sent': { req: FollowingRequestsSentRequest; res: FollowingRequestsSentResponse };
|
||||
'following/requests/reject': { req: FollowingRequestsRejectRequest; res: EmptyResponse };
|
||||
'gallery/featured': { req: GalleryFeaturedRequest; res: GalleryFeaturedResponse };
|
||||
'gallery/popular': { req: EmptyRequest; res: GalleryPopularResponse };
|
||||
|
@@ -282,6 +282,8 @@ export type FollowingRequestsCancelRequest = operations['following___requests___
|
||||
export type FollowingRequestsCancelResponse = operations['following___requests___cancel']['responses']['200']['content']['application/json'];
|
||||
export type FollowingRequestsListRequest = operations['following___requests___list']['requestBody']['content']['application/json'];
|
||||
export type FollowingRequestsListResponse = operations['following___requests___list']['responses']['200']['content']['application/json'];
|
||||
export type FollowingRequestsSentRequest = operations['following___requests___sent']['requestBody']['content']['application/json'];
|
||||
export type FollowingRequestsSentResponse = operations['following___requests___sent']['responses']['200']['content']['application/json'];
|
||||
export type FollowingRequestsRejectRequest = operations['following___requests___reject']['requestBody']['content']['application/json'];
|
||||
export type GalleryFeaturedRequest = operations['gallery___featured']['requestBody']['content']['application/json'];
|
||||
export type GalleryFeaturedResponse = operations['gallery___featured']['responses']['200']['content']['application/json'];
|
||||
|
@@ -1753,6 +1753,15 @@ export type paths = {
|
||||
*/
|
||||
post: operations['following___requests___list'];
|
||||
};
|
||||
'/following/requests/sent': {
|
||||
/**
|
||||
* following/requests/sent
|
||||
* @description No description provided.
|
||||
*
|
||||
* **Credential required**: *Yes* / **Permission**: *read:following*
|
||||
*/
|
||||
post: operations['following___requests___sent'];
|
||||
};
|
||||
'/following/requests/reject': {
|
||||
/**
|
||||
* following/requests/reject
|
||||
@@ -16040,6 +16049,69 @@ export type operations = {
|
||||
};
|
||||
};
|
||||
};
|
||||
/**
|
||||
* following/requests/sent
|
||||
* @description No description provided.
|
||||
*
|
||||
* **Credential required**: *Yes* / **Permission**: *read:following*
|
||||
*/
|
||||
following___requests___sent: {
|
||||
requestBody: {
|
||||
content: {
|
||||
'application/json': {
|
||||
/** Format: misskey:id */
|
||||
sinceId?: string;
|
||||
/** Format: misskey:id */
|
||||
untilId?: string;
|
||||
/** @default 10 */
|
||||
limit?: number;
|
||||
};
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
/** @description OK (with results) */
|
||||
200: {
|
||||
content: {
|
||||
'application/json': {
|
||||
/** Format: id */
|
||||
id: string;
|
||||
follower: components['schemas']['UserLite'];
|
||||
followee: components['schemas']['UserLite'];
|
||||
}[];
|
||||
};
|
||||
};
|
||||
/** @description Client error */
|
||||
400: {
|
||||
content: {
|
||||
'application/json': components['schemas']['Error'];
|
||||
};
|
||||
};
|
||||
/** @description Authentication error */
|
||||
401: {
|
||||
content: {
|
||||
'application/json': components['schemas']['Error'];
|
||||
};
|
||||
};
|
||||
/** @description Forbidden error */
|
||||
403: {
|
||||
content: {
|
||||
'application/json': components['schemas']['Error'];
|
||||
};
|
||||
};
|
||||
/** @description I'm Ai */
|
||||
418: {
|
||||
content: {
|
||||
'application/json': components['schemas']['Error'];
|
||||
};
|
||||
};
|
||||
/** @description Internal server error */
|
||||
500: {
|
||||
content: {
|
||||
'application/json': components['schemas']['Error'];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
/**
|
||||
* following/requests/reject
|
||||
* @description No description provided.
|
||||
|
Reference in New Issue
Block a user