fix: bug
This commit is contained in:
parent
deaa68f048
commit
fa8cc1705f
|
|
@ -354,7 +354,7 @@ export default function Index() {
|
||||||
}, [selectedCategoryId])
|
}, [selectedCategoryId])
|
||||||
|
|
||||||
const displayTemplates = useMemo(() => {
|
const displayTemplates = useMemo(() => {
|
||||||
const recommended = recommendedTemplates.data?.recommendedTemplates || []
|
const recommended = recommendedTemplates.data?.templates || []
|
||||||
const regular = templates.data?.templates || []
|
const regular = templates.data?.templates || []
|
||||||
|
|
||||||
const all = selectedCategoryId
|
const all = selectedCategoryId
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import { useUserBalance } from '@/hooks/core/use-user-balance'
|
||||||
import { useTemplates } from '@/hooks/data/use-templates'
|
import { useTemplates } from '@/hooks/data/use-templates'
|
||||||
import { usePublicTemplates } from '@/hooks/data/use-public-templates'
|
import { usePublicTemplates } from '@/hooks/data/use-public-templates'
|
||||||
import { useFavoriteTemplates } from '@/hooks/data/use-favorite-templates'
|
import { useFavoriteTemplates } from '@/hooks/data/use-favorite-templates'
|
||||||
|
import type { GetUserFavoritesResponse } from '@repo/sdk'
|
||||||
import { useAigcTask } from '@/hooks/actions/use-aigc-task'
|
import { useAigcTask } from '@/hooks/actions/use-aigc-task'
|
||||||
import { useTemplateInteraction } from '@/hooks/actions/use-template-interaction'
|
import { useTemplateInteraction } from '@/hooks/actions/use-template-interaction'
|
||||||
|
|
||||||
|
|
@ -369,7 +370,7 @@ export default function Sync() {
|
||||||
setHasMore(false)
|
setHasMore(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
newItems = data.favorites.filter((fav) => fav.template && !fav.template.isDeleted).map((fav) => transformTemplateToMediaItem(fav.template!))
|
newItems = data.favorites.filter((fav: GetUserFavoritesResponse['favorites'][number]) => fav.template && !fav.template.isDeleted).map((fav: GetUserFavoritesResponse['favorites'][number]) => transformTemplateToMediaItem(fav.template!))
|
||||||
} else if (activeTab === 'new') {
|
} else if (activeTab === 'new') {
|
||||||
if (isAuthenticated) {
|
if (isAuthenticated) {
|
||||||
const { data, error } = await loadTemplates({ limit, page: 1, sortBy: 'createdAt', sortOrder: 'desc' })
|
const { data, error } = await loadTemplates({ limit, page: 1, sortBy: 'createdAt', sortOrder: 'desc' })
|
||||||
|
|
@ -450,7 +451,7 @@ export default function Sync() {
|
||||||
setHasMore(false)
|
setHasMore(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
newItems = data.favorites.filter((fav) => fav.template && !fav.template.isDeleted).map((fav) => transformTemplateToMediaItem(fav.template!))
|
newItems = data.favorites.filter((fav: GetUserFavoritesResponse['favorites'][number]) => fav.template && !fav.template.isDeleted).map((fav: GetUserFavoritesResponse['favorites'][number]) => transformTemplateToMediaItem(fav.template!))
|
||||||
} else if (activeTab === 'new') {
|
} else if (activeTab === 'new') {
|
||||||
if (!isAuthenticated) {
|
if (!isAuthenticated) {
|
||||||
setHasMore(false)
|
setHasMore(false)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ export default function MessageScreen() {
|
||||||
const { load, loading, error, data } = useActivities()
|
const { load, loading, error, data } = useActivities()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
load({ isActive: true })
|
load({ page: 1, limit: 20, orderBy: 'createdAt', order: 'desc' })
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const activities = data?.activities || []
|
const activities = data?.activities || []
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,7 @@ export default function GenerateVideoScreen() {
|
||||||
|
|
||||||
const { generation, error: createError } = await createGeneration({
|
const { generation, error: createError } = await createGeneration({
|
||||||
templateId: String(templateData.id),
|
templateId: String(templateData.id),
|
||||||
type: 'video',
|
type: 'VIDEO',
|
||||||
resultUrl: videoUrls,
|
resultUrl: videoUrls,
|
||||||
originalUrl: uploadedImageUrl,
|
originalUrl: uploadedImageUrl,
|
||||||
status: 'completed',
|
status: 'completed',
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ export default function GenerationRecordScreen() {
|
||||||
|
|
||||||
const { generation: newGeneration, error: createError } = await createGeneration({
|
const { generation: newGeneration, error: createError } = await createGeneration({
|
||||||
templateId: generation.templateId,
|
templateId: generation.templateId,
|
||||||
type: 'video',
|
type: 'VIDEO',
|
||||||
resultUrl: videoUrls,
|
resultUrl: videoUrls,
|
||||||
originalUrl: generation.originalUrl || '',
|
originalUrl: generation.originalUrl || '',
|
||||||
status: 'completed',
|
status: 'completed',
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ export const useTemplateInteraction = () => {
|
||||||
|
|
||||||
const checkLiked = useCallback(async (templateId: string) => {
|
const checkLiked = useCallback(async (templateId: string) => {
|
||||||
const templateSocial = root.get(TemplateSocialController)
|
const templateSocial = root.get(TemplateSocialController)
|
||||||
const { data, error } = await useError(async () => await templateSocial.checkLiked({ query: { templateId } }))
|
const { data, error } = await useError(async () => await templateSocial.checkLiked({ templateId }))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
return { liked: false, error }
|
return { liked: false, error }
|
||||||
|
|
@ -89,7 +89,7 @@ export const useTemplateInteraction = () => {
|
||||||
|
|
||||||
const checkFavorited = useCallback(async (templateId: string) => {
|
const checkFavorited = useCallback(async (templateId: string) => {
|
||||||
const templateSocial = root.get(TemplateSocialController)
|
const templateSocial = root.get(TemplateSocialController)
|
||||||
const { data, error } = await useError(async () => await templateSocial.checkFavorited({ query: { templateId } }))
|
const { data, error } = await useError(async () => await templateSocial.checkFavorited({ templateId }))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
return { favorited: false, error }
|
return { favorited: false, error }
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,14 @@ export const useCategories = () => {
|
||||||
try {
|
try {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
const category = root.get(CategoryController)
|
const category = root.get(CategoryController)
|
||||||
const { data, error } = await useError(async () => await category.list({ ...params, ownerId: OWNER_ID }))
|
const { data, error } = await useError(async () => await category.list({
|
||||||
|
page: params?.page || 1,
|
||||||
|
limit: params?.limit || 20,
|
||||||
|
orderBy: 'createdAt',
|
||||||
|
order: 'desc',
|
||||||
|
...params,
|
||||||
|
ownerId: OWNER_ID
|
||||||
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,9 @@ export const useFavoriteTemplates = () => {
|
||||||
setError(null)
|
setError(null)
|
||||||
|
|
||||||
const templateSocial = root.get(TemplateSocialController)
|
const templateSocial = root.get(TemplateSocialController)
|
||||||
const { data, error } = await useError(async () => await templateSocial.favorites({
|
const { data, error } = await useError(async () => await templateSocial.getUserFavorites({
|
||||||
query: {
|
page: params?.page || 1,
|
||||||
page: params?.page?.toString() || '1',
|
limit: params?.limit || 20
|
||||||
limit: params?.limit?.toString() || '20'
|
|
||||||
}
|
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
import { ApiError } from "@/lib/types"
|
import { ApiError } from "@/lib/types"
|
||||||
import { useState, useCallback } from "react"
|
import { useState, useCallback } from "react"
|
||||||
import { root } from '@repo/core'
|
import { root } from '@repo/core'
|
||||||
import { RecommendedTemplateController, ListPublicRecommendedTemplatesResult } from "@repo/sdk"
|
import { RecommendedTemplateController } from "@repo/sdk"
|
||||||
import { useError } from "./use-error"
|
import { useError } from "./use-error"
|
||||||
|
|
||||||
|
type ApiListResult = Awaited<ReturnType<RecommendedTemplateController['listPublic']>>
|
||||||
|
type ListPublicRecommendedTemplatesResult = NonNullable<ApiListResult>
|
||||||
|
|
||||||
interface UsePublicTemplatesParams {
|
interface UsePublicTemplatesParams {
|
||||||
limit?: number
|
limit?: number
|
||||||
sortBy?: 'sortOrder' | 'likeCount' | 'viewCount' | 'createdAt' | 'updatedAt'
|
sortBy?: 'sortOrder' | 'likeCount' | 'viewCount' | 'createdAt' | 'updatedAt'
|
||||||
|
|
@ -21,7 +24,9 @@ export const usePublicTemplates = () => {
|
||||||
|
|
||||||
const recommendedTemplate = root.get(RecommendedTemplateController)
|
const recommendedTemplate = root.get(RecommendedTemplateController)
|
||||||
const { data, error } = await useError(async () => await recommendedTemplate.listPublic({
|
const { data, error } = await useError(async () => await recommendedTemplate.listPublic({
|
||||||
limit: params?.limit || 20
|
limit: params?.limit || 20,
|
||||||
|
sortBy: params?.sortBy || 'sortOrder',
|
||||||
|
sortOrder: params?.sortOrder || 'desc'
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,9 @@ export const useRecommendedTemplates = () => {
|
||||||
|
|
||||||
const recommendedTemplate = root.get(RecommendedTemplateController)
|
const recommendedTemplate = root.get(RecommendedTemplateController)
|
||||||
const { data, error } = await useError(async () => await recommendedTemplate.listPublic({
|
const { data, error } = await useError(async () => await recommendedTemplate.listPublic({
|
||||||
limit: params?.limit || 20
|
limit: params?.limit || 20,
|
||||||
|
sortBy: 'sortOrder',
|
||||||
|
sortOrder: 'desc'
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,14 @@ export const useTags = () => {
|
||||||
try {
|
try {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
const tag = root.get(TagController)
|
const tag = root.get(TagController)
|
||||||
const { data, error } = await useError(async () => await tag.list({ ...params, ownerId: OWNER_ID }))
|
const { data, error } = await useError(async () => await tag.list({
|
||||||
|
page: params?.page || 1,
|
||||||
|
limit: params?.limit || 20,
|
||||||
|
orderBy: 'createdAt',
|
||||||
|
order: 'desc',
|
||||||
|
...params,
|
||||||
|
ownerId: OWNER_ID
|
||||||
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ export const useTemplateDetail = () => {
|
||||||
setError(null)
|
setError(null)
|
||||||
|
|
||||||
const template = root.get(TemplateController)
|
const template = root.get(TemplateController)
|
||||||
const { data, error } = await useError(async () => await template.get({ query: params }))
|
const { data, error } = await useError(async () => await template.get(params.id))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ export const useTemplateGenerationDetail = () => {
|
||||||
setError(null)
|
setError(null)
|
||||||
|
|
||||||
const templateGeneration = root.get(TemplateGenerationController)
|
const templateGeneration = root.get(TemplateGenerationController)
|
||||||
const { data, error } = await useError(async () => await templateGeneration.get({ query: params }))
|
const { data, error } = await useError(async () => await templateGeneration.get(params.id))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,11 @@ export const useTemplateGenerations = () => {
|
||||||
setError(null)
|
setError(null)
|
||||||
|
|
||||||
const templateGeneration = root.get(TemplateGenerationController)
|
const templateGeneration = root.get(TemplateGenerationController)
|
||||||
const { data, error } = await useError(async () => await templateGeneration.list(params || {}))
|
const { data, error } = await useError(async () => await templateGeneration.list({
|
||||||
|
page: params?.page || 1,
|
||||||
|
limit: params?.limit || 20,
|
||||||
|
...params
|
||||||
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,14 @@ export const useTemplates = () => {
|
||||||
setError(null)
|
setError(null)
|
||||||
|
|
||||||
const template = root.get(TemplateController)
|
const template = root.get(TemplateController)
|
||||||
const { data, error } = await useError(async () => await template.list({ ...params, ownerId: OWNER_ID }))
|
const { data, error } = await useError(async () => await template.list({
|
||||||
|
page: params?.page || 1,
|
||||||
|
limit: params?.limit || 20,
|
||||||
|
sortBy: params?.sortBy || 'createdAt',
|
||||||
|
sortOrder: params?.sortOrder || 'desc',
|
||||||
|
...params,
|
||||||
|
ownerId: OWNER_ID
|
||||||
|
}))
|
||||||
if (error) {
|
if (error) {
|
||||||
setError(error)
|
setError(error)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import * as SecureStore from "expo-secure-store";
|
||||||
|
|
||||||
|
export const storage = {
|
||||||
|
async getItem(key: string): Promise<string | null> {
|
||||||
|
return await SecureStore.getItemAsync(key);
|
||||||
|
},
|
||||||
|
|
||||||
|
async setItem(key: string, value: string): Promise<void> {
|
||||||
|
await SecureStore.setItemAsync(key, value);
|
||||||
|
},
|
||||||
|
|
||||||
|
async removeItem(key: string): Promise<void> {
|
||||||
|
await SecureStore.deleteItemAsync(key);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
export const storage = {
|
||||||
|
async getItem(key: string): Promise<string | null> {
|
||||||
|
if (typeof window === "undefined") return null;
|
||||||
|
return window.localStorage.getItem(key);
|
||||||
|
},
|
||||||
|
|
||||||
|
async setItem(key: string, value: string): Promise<void> {
|
||||||
|
if (typeof window === "undefined") return;
|
||||||
|
window.localStorage.setItem(key, value);
|
||||||
|
},
|
||||||
|
|
||||||
|
async removeItem(key: string): Promise<void> {
|
||||||
|
if (typeof window === "undefined") return;
|
||||||
|
window.localStorage.removeItem(key);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -4,10 +4,11 @@
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"jsx": "react-native",
|
"jsx": "react-native",
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
|
"lib": ["ES2020", "DOM"],
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./*"]
|
"@/*": ["./*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts", "nativewind-env.d.ts"],
|
"include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts", "nativewind-env.d.ts"],
|
||||||
"exclude": ["scripts/**/*"]
|
"exclude": ["scripts/**/*", "storage.ts"]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue