feat(feedback): add problem reporting flow

This commit is contained in:
2026-07-16 18:30:34 +08:00
parent 4981de9b18
commit 37f45f0736
34 changed files with 1866 additions and 4 deletions
@@ -0,0 +1,21 @@
import type {
FeedbackSubmitResponse,
SubmitFeedbackInput,
} from "@/data/dto/feedback";
import type { IFeedbackRepository } from "@/data/repositories/interfaces";
import { FeedbackApi, feedbackApi } from "@/data/services/api/feedback_api";
import { Result } from "@/utils/result";
import { createLazySingleton } from "./lazy_singleton";
export class FeedbackRepository implements IFeedbackRepository {
constructor(private readonly api: FeedbackApi) {}
submit(input: SubmitFeedbackInput): Promise<Result<FeedbackSubmitResponse>> {
return Result.wrap(() => this.api.submit(input));
}
}
export const getFeedbackRepository = createLazySingleton<IFeedbackRepository>(
() => new FeedbackRepository(feedbackApi),
);
+2
View File
@@ -4,12 +4,14 @@
export * from "./auth_repository";
export * from "./chat_repository";
export * from "./feedback_repository";
export * from "./metrics_repository";
export * from "./payment_repository";
export * from "./private_room_repository";
export * from "./user_repository";
export * from "./interfaces/iauth_repository";
export * from "./interfaces/ichat_repository";
export * from "./interfaces/ifeedback_repository";
export * from "./interfaces/imetrics_repository";
export * from "./interfaces/ipayment_repository";
export * from "./interfaces/iprivate_room_repository";
@@ -0,0 +1,9 @@
import type {
FeedbackSubmitResponse,
SubmitFeedbackInput,
} from "@/data/dto/feedback";
import type { Result } from "@/utils/result";
export interface IFeedbackRepository {
submit(input: SubmitFeedbackInput): Promise<Result<FeedbackSubmitResponse>>;
}
@@ -4,6 +4,7 @@
export * from "./iauth_repository";
export * from "./ichat_repository";
export * from "./ifeedback_repository";
export * from "./imetrics_repository";
export * from "./ipayment_repository";
export * from "./iprivate_room_repository";