pl-fe: steal code from mastodon, pl-api: masto admin api fixes
Signed-off-by: Nicole Mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@@ -4237,7 +4237,7 @@ class PlApiClient {
|
||||
* @see {@link https://docs.joinmastodon.org/methods/admin/dimensions/#get}
|
||||
*/
|
||||
getDimensions: async (keys: AdminDimensionKey[], params?: AdminGetDimensionsParams) => {
|
||||
const response = await this.request('/api/v1/admin/dimensions', { params: { ...params, keys } });
|
||||
const response = await this.request('/api/v1/admin/dimensions', { method: 'POST', params: { ...params, keys } });
|
||||
|
||||
return v.parse(filteredArray(adminDimensionSchema), response.json);
|
||||
},
|
||||
@@ -4394,7 +4394,7 @@ class PlApiClient {
|
||||
* @see {@link https://docs.joinmastodon.org/methods/admin/measures/#get}
|
||||
*/
|
||||
getMeasures: async (keys: AdminMeasureKey[], start_at: string, end_at: string, params?: AdminGetMeasuresParams) => {
|
||||
const response = await this.request('/api/v1/admin/measures', { params: { ...params, keys, start_at, end_at } });
|
||||
const response = await this.request('/api/v1/admin/measures', { method: 'POST', params: { ...params, keys, start_at, end_at } });
|
||||
|
||||
return v.parse(filteredArray(adminMeasureSchema), response.json);
|
||||
},
|
||||
@@ -4409,7 +4409,7 @@ class PlApiClient {
|
||||
* @see {@link https://docs.joinmastodon.org/methods/admin/retention/#create}
|
||||
*/
|
||||
getRetention: async (start_at: string, end_at: string, frequency: 'day' | 'month') => {
|
||||
const response = await this.request('/api/v1/admin/retention', { params: { start_at, end_at, frequency } });
|
||||
const response = await this.request('/api/v1/admin/retention', { method: 'POST', params: { start_at, end_at, frequency } });
|
||||
|
||||
return v.parse(adminCohortSchema, response.json);
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as v from 'valibot';
|
||||
|
||||
import { datetimeSchema } from '../utils';
|
||||
import { dateSchema } from '../utils';
|
||||
|
||||
/**
|
||||
* @category Admin schemas
|
||||
@@ -11,10 +11,10 @@ const adminMeasureSchema = v.object({
|
||||
unit: v.fallback(v.nullable(v.string()), null),
|
||||
total: v.pipe(v.unknown(), v.transform(Number)),
|
||||
human_value: v.fallback(v.optional(v.string()), undefined),
|
||||
previous_total: v.fallback(v.optional(v.pipe(v.unknown(), v.transform(String))), undefined),
|
||||
previous_total: v.fallback(v.optional(v.pipe(v.unknown(), v.transform(Number))), undefined),
|
||||
data: v.array(v.object({
|
||||
date: datetimeSchema,
|
||||
value: v.pipe(v.unknown(), v.transform(String)),
|
||||
date: dateSchema,
|
||||
value: v.pipe(v.unknown(), v.transform(Number)),
|
||||
})),
|
||||
});
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ const datetimeSchema = v.pipe(
|
||||
v.regex(/^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(([+-]\d{2}:?\d{2})|(Z)?)$/),
|
||||
);
|
||||
|
||||
const dateSchema = v.pipe(v.string(), v.transform((value) => value.slice(0, 10)), v.regex(/^\d{4}-\d{2}-\d{2}$/));
|
||||
|
||||
/** Validates individual items in an array, dropping any that aren't valid. */
|
||||
const filteredArray = <T>(schema: v.BaseSchema<any, T, v.BaseIssue<unknown>>) =>
|
||||
v.pipe(
|
||||
@@ -35,4 +37,4 @@ const coerceObject = <T extends v.ObjectEntries>(shape: T) =>
|
||||
v.object(shape),
|
||||
);
|
||||
|
||||
export { filteredArray, emojiSchema, datetimeSchema, mimeSchema, coerceObject };
|
||||
export { filteredArray, emojiSchema, datetimeSchema, dateSchema, mimeSchema, coerceObject };
|
||||
|
||||
@@ -1070,6 +1070,14 @@ const getFeatures = (instance: Instance) => {
|
||||
v.software === PLEROMA && v.build === PL,
|
||||
]),
|
||||
|
||||
/**
|
||||
* @see POST /api/v1/admin/dimensions
|
||||
* @see POST /api/v1/admin/measures
|
||||
* @see POST /api/v1/admin/retention
|
||||
*/
|
||||
mastodonAdminMetrics: v.software === MASTODON && gte(v.version, '3.5.0'),
|
||||
|
||||
|
||||
/**
|
||||
* Can perform moderation actions with account and reports.
|
||||
* @see {@link https://docs.joinmastodon.org/methods/admin/}
|
||||
|
||||
Reference in New Issue
Block a user