refactor(api): add adapter layer for order/chat/review/dispute writes
This commit is contained in:
+12
-12
@@ -3,18 +3,12 @@ import { generateId } from "@/lib/id"
|
||||
import { mockChatMessages, mockChatSessions, mockUsers } from "@/lib/mock"
|
||||
import type { ChatMessage, ChatSession, Order } from "@/lib/types"
|
||||
|
||||
interface Sender {
|
||||
id: string
|
||||
name: string
|
||||
avatar: string
|
||||
}
|
||||
|
||||
interface ChatState {
|
||||
sessions: ChatSession[]
|
||||
messages: ChatMessage[]
|
||||
ensureOrderSession: (order: Order) => ChatSession
|
||||
sendTextMessage: (sessionId: string, sender: Sender, content: string) => void
|
||||
sendImageMessage: (sessionId: string, sender: Sender, imageUrl: string) => void
|
||||
sendTextMessage: (sessionId: string, actorId: string, content: string) => void
|
||||
sendImageMessage: (sessionId: string, actorId: string, imageUrl: string) => void
|
||||
}
|
||||
|
||||
function resolveAvatar(userId: string) {
|
||||
@@ -72,17 +66,20 @@ export const useChatStore = create<ChatState>((set, get) => ({
|
||||
|
||||
return session
|
||||
},
|
||||
sendTextMessage: (sessionId, sender, content) => {
|
||||
sendTextMessage: (sessionId, actorId, content) => {
|
||||
const text = content.trim()
|
||||
if (!text) return
|
||||
const session = get().sessions.find((item) => item.id === sessionId)
|
||||
if (!session || session.readonly) return
|
||||
|
||||
const sender = session.participants.find((participant) => participant.id === actorId)
|
||||
if (!sender) return
|
||||
|
||||
const now = new Date().toISOString()
|
||||
const message: ChatMessage = {
|
||||
id: generateId("msg"),
|
||||
sessionId,
|
||||
senderId: sender.id,
|
||||
senderId: actorId,
|
||||
senderName: sender.name,
|
||||
senderAvatar: sender.avatar,
|
||||
type: "text",
|
||||
@@ -103,17 +100,20 @@ export const useChatStore = create<ChatState>((set, get) => ({
|
||||
),
|
||||
}))
|
||||
},
|
||||
sendImageMessage: (sessionId, sender, imageUrl) => {
|
||||
sendImageMessage: (sessionId, actorId, imageUrl) => {
|
||||
const content = imageUrl.trim()
|
||||
if (!content) return
|
||||
const session = get().sessions.find((item) => item.id === sessionId)
|
||||
if (!session || session.readonly) return
|
||||
|
||||
const sender = session.participants.find((participant) => participant.id === actorId)
|
||||
if (!sender) return
|
||||
|
||||
const now = new Date().toISOString()
|
||||
const message: ChatMessage = {
|
||||
id: generateId("msg"),
|
||||
sessionId,
|
||||
senderId: sender.id,
|
||||
senderId: actorId,
|
||||
senderName: sender.name,
|
||||
senderAvatar: sender.avatar,
|
||||
type: "image",
|
||||
|
||||
Reference in New Issue
Block a user