This commit is contained in:
ct
2025-07-16 15:49:30 +08:00
parent d4c5fb5589
commit 6c8a69173e
24 changed files with 594 additions and 64 deletions

View File

@@ -30,12 +30,26 @@ const useMediaStore = create(
},
// Selection actions
selectMeme: (meme) => {
selectMeme: async (meme) => {
set({ selectedMeme: meme });
try {
await axiosInstance.post(route('api.app.select.meme'), {
meme_ids: meme.ids,
});
} catch (error) {
console.error('Error meme selection:', error);
}
},
selectBackground: (background) => {
selectBackground: async (background) => {
set({ selectedBackground: background });
try {
await axiosInstance.post(route('api.app.select.background'), {
background_ids: background.ids,
});
} catch (error) {
console.error('Error background selection:', error);
}
},
// Update current caption when user edits text
@@ -52,6 +66,23 @@ const useMediaStore = create(
set({ selectedBackground: null });
},
// Save meme action
saveMeme: async (captionTexts, isPremiumExport = false) => {
try {
const { selectedMeme, selectedBackground } = get();
await axiosInstance.post(route('api.app.save.meme'), {
meme_media_ids: selectedMeme?.ids || null,
background_media_ids: selectedBackground?.ids || null,
caption_texts: captionTexts,
is_premium_export: isPremiumExport,
});
} catch (error) {
console.error('Error saving meme:', error);
// Silently ignore save tracking errors
}
},
// Fetch AI hints
fetchAIHints: async () => {
set({ isLoadingAIHints: true });

View File

@@ -58,9 +58,13 @@ const useUserStore = create(
}
},
premiumExportRequest: async () => {
premiumExportRequest: async (memeMediaIds, backgroundMediaIds, captionTexts) => {
try {
const response = await axiosInstance.post(route('api.user.premium_export.request'));
const response = await axiosInstance.post(route('api.user.premium_export.request'), {
meme_media_ids: memeMediaIds,
background_media_ids: backgroundMediaIds,
caption_texts: captionTexts,
});
if (response?.data?.success?.data?.user_usage) {
set({
@@ -109,9 +113,13 @@ const useUserStore = create(
}
},
basicExportRequest: async () => {
basicExportRequest: async (memeMediaIds, backgroundMediaIds, captionTexts) => {
try {
const response = await axiosInstance.post(route('api.basic_export.request'));
const response = await axiosInstance.post(route('api.basic_export.request'), {
meme_media_ids: memeMediaIds,
background_media_ids: backgroundMediaIds,
caption_texts: captionTexts,
});
if (response?.data?.success?.message) {
toast.success(response.data.success.message);