Files
hipmi-mobile/components/Image/AvatarComp.tsx
bagasbanuna d693550a1f Fix Alur Login & Load data forum , user search
Admin – User Access
- app/(application)/admin/user-access/[id]/index.tsx

Authentication
- context/AuthContext.tsx
- screens/Authentication/EULASection.tsx
- screens/Authentication/LoginView.tsx

Forum
- screens/Forum/ViewBeranda3.tsx

Profile & UI Components
- components/Image/AvatarComp.tsx
- screens/Profile/AvatarAndBackground.tsx

### No Issue
2026-01-29 15:08:00 +08:00

66 lines
1.4 KiB
TypeScript

import API_STRORAGE from "@/constants/base-url-api-strorage";
import DUMMY_IMAGE from "@/constants/dummy-image-value";
import { Href, router } from "expo-router";
import { TouchableOpacity } from "react-native";
import { Avatar } from "react-native-paper";
type Size = "base" | "sm" | "md" | "lg" | "xl";
const sizeMap = {
base: 40,
sm: 60,
md: 80,
lg: 100,
xl: 120,
};
interface AvatarCompProps {
fileId?: string;
fileIdDefault?: string;
size: Size;
onPress?: () => void | any;
href?: Href | undefined | any;
}
export default function AvatarComp({
fileId,
fileIdDefault,
size,
onPress,
href = `/(application)/(image)/preview-image/${fileId}`,
}: AvatarCompProps) {
const dimension = sizeMap[size];
const avatarImage = () => {
return (
<Avatar.Image
size={dimension}
source={
fileId
? { uri: API_STRORAGE.GET({ fileId }) }
: fileIdDefault
? fileIdDefault
: DUMMY_IMAGE.avatar
}
/>
);
};
return (
<>
{onPress || href ? (
<TouchableOpacity
activeOpacity={0.9}
onPress={
href || fileId ? () => router.navigate(href as any) : onPress
}
disabled={!fileId}
>
{avatarImage()}
</TouchableOpacity>
) : (
avatarImage()
)}
</>
);
}