This commit is contained in:
oneao committed 2026-01-30 22:06:16 +08:00
1 parent 6a8c31e20c
commit 572011017a
25 files changed
+599 -563

No files matched your search

@@ -5,7 +5,8 @@ import { useCallback, useEffect, useState } from 'react'
import { Text, TouchableOpacity, View } from 'react-native'
import Animated, { useAnimatedRef } from 'react-native-reanimated'
import Sortable from 'react-native-sortables'
import { ADivider, ADrawer, LucideIcon } from '@/components/common/ao'
import { ADrawer, LucideIcon } from '@/components/common/ao'
import { Divider } from '@/components/ui/divider'
import { useNavStore } from '@/store/navigation'
export default function TabsLayout() {
@@ -92,9 +93,7 @@ export default function TabsLayout() {
<LucideIcon icon="Bot" size={24} clickable={false} strokeWidth={2} />
</TouchableOpacity>
<ADivider
direction="vertical"
/>
<Divider orientation="vertical" className="h-8" />
<TouchableOpacity
className="flex-1 items-center justify-center flex flex-row"
@@ -106,7 +105,7 @@ export default function TabsLayout() {
<Text className="font-semibold text-lg ml-2">{currentNav.label}</Text>
</TouchableOpacity>
<ADivider direction="vertical" />
<Divider orientation="vertical" className="h-8" />
<TouchableOpacity className="w-12 items-center justify-center" onPress={refreshPage}>
<LucideIcon icon="RefreshCcw" size={24} clickable={false} strokeWidth={2} />
@@ -5,7 +5,7 @@ import { Pressable, RefreshControl, SectionList, Text, Vibration, View } from 'r
import { LucideIcon } from '@/components/common/ao'
import EmptyState from '@/components/common/EmptyStatus'
import MoneyCategoryIcon from '@/components/common/MoneyCategoryIcon'
import { Menu, MenuItem, MenuItemLabel } from '@/components/ui/menu'
import { Menu, MenuItem, MenuItemLabel, MenuSeparator } from '@/components/ui/menu'
import { useMoneyCategoryStore } from '@/store/moneyCategory'
import { useUserStore } from '@/store/user'
import { MoneyCategoryEnum } from '@/types/money/category'
@@ -125,6 +125,7 @@ export default function StaticTransactions({
shadowColor: '#000',
borderRadius: 4,
width: 160,
padding: 0,
}}
offset={0}
placement="bottom"
@@ -186,53 +187,69 @@ export default function StaticTransactions({
>
{
userID === item.user_id && (
<MenuItem
key="update"
textValue="update"
className="flex gap-2"
style={{
paddingVertical: 10,
minWidth: 150,
}}
onPress={() => {
onUpdate?.(item)
}}
>
<LucideIcon icon="Pencil" size={18} />
<MenuItemLabel>更新</MenuItemLabel>
</MenuItem>
<>
<MenuItem
key="update"
textValue="update"
className="flex gap-3"
style={{
minWidth: 150,
height: 42,
paddingTop: 0,
paddingBottom: 0,
alignItems: 'center',
borderRadius: 0,
}}
onPress={() => {
onUpdate?.(item)
}}
>
<LucideIcon icon="Pencil" size={18} />
<MenuItemLabel className="text-lg">更新</MenuItemLabel>
</MenuItem>
<MenuSeparator />
</>
)
}
<MenuItem
key="delete"
textValue="delete"
className="flex gap-2"
className="flex gap-3"
style={{
paddingVertical: 10,
minWidth: 150,
height: 42,
paddingTop: 0,
paddingBottom: 0,
alignItems: 'center',
borderRadius: 0,
}}
onPress={() => {
onDelete?.(item.id)
}}
>
<LucideIcon icon="Trash" size={18} />
<MenuItemLabel>删除</MenuItemLabel>
<MenuItemLabel className="text-lg">删除</MenuItemLabel>
</MenuItem>
<MenuSeparator />
<MenuItem
key="detail"
textValue="detail"
className="flex gap-2"
className="flex gap-3"
style={{
paddingVertical: 10,
minWidth: 150,
height: 42,
paddingTop: 0,
paddingBottom: 0,
alignItems: 'center',
borderRadius: 0,
}}
onPress={() => {
onDetail?.(item.id)
}}
>
<LucideIcon icon="ReceiptText" size={18} />
<MenuItemLabel>详细</MenuItemLabel>
<MenuItemLabel className="text-lg">详细</MenuItemLabel>
</MenuItem>
</Menu>
)
@@ -1,4 +1,4 @@
import type { SpaceUser } from '@/types/space/space'
import type { SpaceMember } from '@/types/space/space'
import * as Clipboard from 'expo-clipboard'
import { useState } from 'react'
import { FlatList, TouchableHighlight, TouchableOpacity, View } from 'react-native'
@@ -28,7 +28,7 @@ import { HStack } from '@/components/ui/hstack'
import { ChevronDownIcon, ChevronUpIcon } from '@/components/ui/icon'
import { Text } from '@/components/ui/text'
import { VStack } from '@/components/ui/vstack'
import { dissolveSpaceApi, exitSpaceApi, removeSpaceUserApi } from '@/request/api/space/space'
import { dissolveSpaceApi, exitSpaceApi, removeSpaceMemberApi } from '@/request/api/space/space'
import { useUserStore } from '@/store/user'
import { formatRelativeTime } from '@/utils/time'
import { toast } from '@/utils/toast'
@@ -42,7 +42,7 @@ interface ExitParams {
interface SpaceInviteProps {
userSpace: UserSpace | null
spaceUsers: SpaceUser[]
spaceUsers: SpaceMember[]
onExit?: (params: ExitParams) => void
}
@@ -92,7 +92,7 @@ export default function SpaceInvite({
return
}
// 移除
removeSpaceUserApi({
removeSpaceMemberApi({
space_id: userSpace.id,
user_id: modal.userId,
}).catch((err) => {
@@ -1,8 +1,8 @@
import type { SpaceUser } from '@/types/space/space'
import type { SpaceMember } from '@/types/space/space'
import { useEffect, useState } from 'react'
import { View } from 'react-native'
import CustomHeader from '@/components/custom/Header'
import { createSpaceApi, joinSpaceApi, listSpaceUsersApi } from '@/request/api/space/space'
import { createSpaceApi, joinSpaceApi, listSpaceMembersApi } from '@/request/api/space/space'
import { useSpaceStore } from '@/store/space'
import { useUserStore } from '@/store/user'
import JoinSpace from './components/JoinSpace'
@@ -16,15 +16,15 @@ export default function PagerWithTab() {
const [headerTitle, setHeaderTitle] = useState('我的空间')
const [step, setStep] = useState<'join' | 'invite' | 'home'>('home')
const [spaceUsers, setSpaceUsers] = useState<SpaceUser[]>([])
const [spaceUsers, setSpaceUsers] = useState<SpaceMember[]>([])
// 封装获取空间用户列表并直接更新状态
const fetchSpaceUsers = async (spaceId: number) => {
try {
const res = await listSpaceUsersApi({ space_id: spaceId })
const res = await listSpaceMembersApi({ space_id: spaceId })
if (res.isSuccess) {
setSpaceUsers(res.data.users)
console.log(res.data.users)
setSpaceUsers(res.data.members)
console.log(res.data.members)
}
else {
console.warn('获取空间用户失败')
@@ -7,12 +7,12 @@ import type {
ExitSpaceResult,
JoinSpaceParams,
JoinSpaceResult,
ListSpaceUsersParams,
ListSpaceUsersResult,
RemoveSpaceUserParams,
RemoveSpaceUserResult,
UpdateSpaceUserRoleParams,
UpdateSpaceUserRoleResult,
ListSpaceMembersParams,
ListSpaceMembersResult,
RemoveSpaceMemberParams,
RemoveSpaceMemberResult,
UpdateSpaceMemberRoleParams,
UpdateSpaceMemberRoleResult,
} from '@/types/space/space'
import alovaInstance from '../../index'
@@ -39,16 +39,16 @@ export function exitSpaceApi(params: ExitSpaceParams) {
}
// Remove Space User API
export function removeSpaceUserApi(params: RemoveSpaceUserParams) {
return alovaInstance.Post<ResponseData<RemoveSpaceUserResult>>(`${API_PREFIX}/remove`, params)
export function removeSpaceMemberApi(params: RemoveSpaceMemberParams) {
return alovaInstance.Post<ResponseData<RemoveSpaceMemberResult>>(`${API_PREFIX}/remove`, params)
}
// Update Role API
export function updateSpaceUserRoleApi(params: UpdateSpaceUserRoleParams) {
return alovaInstance.Post<ResponseData<UpdateSpaceUserRoleResult>>(`${API_PREFIX}/updateRole`, params)
export function updateSpaceMemberRoleApi(params: UpdateSpaceMemberRoleParams) {
return alovaInstance.Post<ResponseData<UpdateSpaceMemberRoleResult>>(`${API_PREFIX}/updateRole`, params)
}
// List Space Users API
export function listSpaceUsersApi(params: ListSpaceUsersParams) {
return alovaInstance.Post<ResponseData<ListSpaceUsersResult>>(`${API_PREFIX}/users`, params)
export function listSpaceMembersApi(params: ListSpaceMembersParams) {
return alovaInstance.Post<ResponseData<ListSpaceMembersResult>>(`${API_PREFIX}/members`, params)
}
+2 -2
View File
@@ -28,8 +28,8 @@ function isWhiteListed(url: string) {
}
const alovaInstance = createAlova({
// baseURL: 'http://192.168.5.6:8086/app',
baseURL: 'http://192.168.1.137:8086/app',
baseURL: 'http://192.168.5.6:8086/app',
// baseURL: 'http://192.168.1.137:8086/app',
requestAdapter: axiosRequestAdapter(),
timeout: 5000,
cacheFor: null,
@@ -31,25 +31,25 @@ export interface ExitSpaceResult {
}
// 踢出用户
export interface RemoveSpaceUserParams {
export interface RemoveSpaceMemberParams {
space_id: number
user_id: number
}
export interface RemoveSpaceUserResult {
export interface RemoveSpaceMemberResult {
}
// 更新用户权限
export interface UpdateSpaceUserRoleParams {
export interface UpdateSpaceMemberRoleParams {
space_id: number
user_id: number
role: number
}
export interface UpdateSpaceUserRoleResult {
export interface UpdateSpaceMemberRoleResult {
}
// 空间用户列表
export interface SpaceUser {
export interface SpaceMember {
id: number
username: string
avatar: string
@@ -57,10 +57,10 @@ export interface SpaceUser {
last_login_time: number
}
export interface ListSpaceUsersParams {
export interface ListSpaceMembersParams {
space_id: number
}
export interface ListSpaceUsersResult {
users: SpaceUser[]
export interface ListSpaceMembersResult {
members: SpaceMember[]
}