feat: implement browser extension for media publishing and add backend support for media management
This commit is contained in:
@@ -282,6 +282,185 @@ export interface ArticleVersion {
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export const MIN_BROWSER_EXTENSION_VERSION = "0.1.0";
|
||||
|
||||
export interface MediaPlatform {
|
||||
id: number;
|
||||
platform_id: string;
|
||||
name: string;
|
||||
category: string;
|
||||
short_name: string;
|
||||
accent_color: string;
|
||||
login_url: string | null;
|
||||
logo_url: string | null;
|
||||
status: string;
|
||||
sort_order: number;
|
||||
}
|
||||
|
||||
export interface PlatformAccount {
|
||||
id: number;
|
||||
platform_id: string;
|
||||
platform_name: string;
|
||||
platform_category: string;
|
||||
platform_uid: string;
|
||||
nickname: string;
|
||||
avatar_url: string | null;
|
||||
status: string;
|
||||
login_url: string | null;
|
||||
last_check_at: string | null;
|
||||
metadata?: Record<string, JsonValue> | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface CreatePluginSessionRequest {
|
||||
action_type: "bind" | "check";
|
||||
platform_id: string;
|
||||
platform_account_id?: number | null;
|
||||
plugin_installation_id?: number | null;
|
||||
resource_type?: string | null;
|
||||
resource_id?: number | null;
|
||||
}
|
||||
|
||||
export interface CreatePluginSessionResponse {
|
||||
plugin_session_id: number;
|
||||
session_token: string;
|
||||
expire_at: string;
|
||||
min_plugin_version: string;
|
||||
}
|
||||
|
||||
export interface CreatePublishBatchRequest {
|
||||
platform_account_ids: number[];
|
||||
plugin_installation_id?: number | null;
|
||||
publish_type?: "publish" | "draft";
|
||||
cover_asset_url?: string | null;
|
||||
}
|
||||
|
||||
export interface PublishBatchTask {
|
||||
publish_record_id: number;
|
||||
platform_account_id: number;
|
||||
platform_id: string;
|
||||
platform_name: string;
|
||||
platform_uid: string;
|
||||
platform_nickname: string;
|
||||
plugin_session_id: number;
|
||||
session_token: string;
|
||||
expire_at: string;
|
||||
}
|
||||
|
||||
export interface CreatePublishBatchResponse {
|
||||
publish_batch_id: number;
|
||||
status: string;
|
||||
tasks: PublishBatchTask[];
|
||||
}
|
||||
|
||||
export interface PublishRecord {
|
||||
id: number;
|
||||
publish_batch_id: number;
|
||||
article_id: number;
|
||||
platform_account_id: number;
|
||||
platform_id: string;
|
||||
platform_name: string;
|
||||
platform_nickname: string;
|
||||
status: string;
|
||||
external_article_id: string | null;
|
||||
external_article_url: string | null;
|
||||
external_manage_url: string | null;
|
||||
published_at: string | null;
|
||||
error_message: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface PublisherLocalPlatformState {
|
||||
platform_id: string;
|
||||
connected: boolean;
|
||||
platform_uid?: string | null;
|
||||
nickname?: string | null;
|
||||
avatar_url?: string | null;
|
||||
message?: string | null;
|
||||
}
|
||||
|
||||
export interface PublisherPluginPingResponse {
|
||||
installed: boolean;
|
||||
version?: string;
|
||||
capabilities?: Array<"ping" | "detect" | "bind" | "publish" | "background">;
|
||||
installation_key?: string;
|
||||
plugin_installation_id?: number | null;
|
||||
}
|
||||
|
||||
export interface RegisterPluginInstallationRequest {
|
||||
installation_key: string;
|
||||
installation_name: string;
|
||||
browser_name?: string | null;
|
||||
client_version?: string | null;
|
||||
}
|
||||
|
||||
export interface RegisterPluginInstallationResponse {
|
||||
plugin_installation_id: number;
|
||||
installation_token: string;
|
||||
status: string;
|
||||
last_seen_at: string;
|
||||
}
|
||||
|
||||
export interface PublisherRegisterInstallationPayload {
|
||||
plugin_installation_id: number;
|
||||
installation_token: string;
|
||||
api_base_url: string;
|
||||
}
|
||||
|
||||
export interface PublisherRegisterInstallationResult {
|
||||
success: boolean;
|
||||
plugin_installation_id: number;
|
||||
}
|
||||
|
||||
export interface PublisherBindRequest {
|
||||
platform_id: string;
|
||||
login_url?: string | null;
|
||||
callback_base_url: string;
|
||||
plugin_session_id: number;
|
||||
session_token: string;
|
||||
}
|
||||
|
||||
export interface PublisherBindResponse {
|
||||
success: boolean;
|
||||
platform_id: string;
|
||||
platform_uid?: string | null;
|
||||
nickname?: string | null;
|
||||
avatar_url?: string | null;
|
||||
platform_account_id?: number | null;
|
||||
message?: string | null;
|
||||
}
|
||||
|
||||
export interface PublisherPublishArticleRequest {
|
||||
article_id: number;
|
||||
title: string;
|
||||
markdown_content: string;
|
||||
html_content?: string | null;
|
||||
cover_asset_url?: string | null;
|
||||
callback_base_url: string;
|
||||
publish_type: "publish" | "draft";
|
||||
tasks: PublishBatchTask[];
|
||||
}
|
||||
|
||||
export interface PublisherPublishTaskResult {
|
||||
publish_record_id: number;
|
||||
platform_account_id: number;
|
||||
platform_id: string;
|
||||
success: boolean;
|
||||
status: "success" | "failed" | "pending_review";
|
||||
external_article_id?: string | null;
|
||||
external_article_url?: string | null;
|
||||
external_manage_url?: string | null;
|
||||
message?: string | null;
|
||||
}
|
||||
|
||||
export interface PublisherPublishResponse {
|
||||
success: boolean;
|
||||
batch_status: string;
|
||||
results: PublisherPublishTaskResult[];
|
||||
}
|
||||
|
||||
export interface BrandRequest {
|
||||
name: string;
|
||||
website?: string | null;
|
||||
|
||||
Reference in New Issue
Block a user