feat: update admin features, user confirmation, and native configs
- Admin: Update layout, notification bell, and event detail screen - User: Improve event confirmation flow - Config: Update AndroidManifest, Info.plist, entitlements, and app.config.js ### No Issue
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter android:autoVerify="true" data-generated="true">
|
<intent-filter android:autoVerify="true" data-generated="true">
|
||||||
<action android:name="android.intent.action.VIEW"/>
|
<action android:name="android.intent.action.VIEW"/>
|
||||||
<data android:scheme="https" android:host="cld-dkr-staging-hipmi.wibudev.com" android:pathPrefix="/"/>
|
<data android:scheme="https" android:host="cld-dkr-hipmi-stg.wibudev.com" android:pathPrefix="/"/>
|
||||||
<category android:name="android.intent.category.BROWSABLE"/>
|
<category android:name="android.intent.category.BROWSABLE"/>
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
associatedDomains: [
|
associatedDomains: [
|
||||||
"applinks:cld-dkr-hipmi-stg.wibudev.com",
|
"applinks:cld-dkr-hipmi-stg.wibudev.com",
|
||||||
],
|
],
|
||||||
buildNumber: "3",
|
buildNumber: "4",
|
||||||
},
|
},
|
||||||
|
|
||||||
android: {
|
android: {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
TextCustom,
|
TextCustom,
|
||||||
ViewWrapper,
|
ViewWrapper,
|
||||||
} from "@/components";
|
} from "@/components";
|
||||||
import { AccentColor, MainColor } from "@/constants/color-palet";
|
import { MainColor } from "@/constants/color-palet";
|
||||||
import { useAuth } from "@/hooks/use-auth";
|
import { useAuth } from "@/hooks/use-auth";
|
||||||
import {
|
import {
|
||||||
apiEventConfirmationAction,
|
apiEventConfirmationAction,
|
||||||
@@ -60,7 +60,7 @@ export default function UserEventConfirmation() {
|
|||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
useCallback(() => {
|
useCallback(() => {
|
||||||
checkTokenAndDataParticipants() || console.log("Token is null");
|
checkTokenAndDataParticipants() || console.log("Token is null");
|
||||||
}, [token, id, user?.id])
|
}, [token, id, user?.id]),
|
||||||
);
|
);
|
||||||
|
|
||||||
const checkTokenAndDataParticipants = async () => {
|
const checkTokenAndDataParticipants = async () => {
|
||||||
@@ -113,7 +113,7 @@ export default function UserEventConfirmation() {
|
|||||||
confirmationStart,
|
confirmationStart,
|
||||||
confirmationEnd,
|
confirmationEnd,
|
||||||
null,
|
null,
|
||||||
"[]"
|
"[]",
|
||||||
);
|
);
|
||||||
|
|
||||||
// --- [4] Status waktu event (untuk pesan UI) ---
|
// --- [4] Status waktu event (untuk pesan UI) ---
|
||||||
@@ -218,9 +218,14 @@ export default function UserEventConfirmation() {
|
|||||||
if (isWithinConfirmationWindow) {
|
if (isWithinConfirmationWindow) {
|
||||||
if (konfirmasi === false) {
|
if (konfirmasi === false) {
|
||||||
return (
|
return (
|
||||||
<TamplateBox data={data}>
|
// <TamplateBox data={data}>
|
||||||
<TamplateText text="Konfirmasi Kehadiran" />
|
// <TamplateText text="Konfirmasi Kehadiran" />
|
||||||
</TamplateBox>
|
// </TamplateBox>
|
||||||
|
<UserParticipan_And_DuringEvent
|
||||||
|
id={data.id}
|
||||||
|
userId={user?.id as string}
|
||||||
|
data={data}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
@@ -261,17 +266,15 @@ export default function UserEventConfirmation() {
|
|||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
title: "Konfirmasi Event",
|
title: "Konfirmasi Event",
|
||||||
// headerLeft: () => (
|
headerLeft: () => (
|
||||||
// <Ionicons
|
<Ionicons
|
||||||
// name="arrow-back"
|
name="arrow-back"
|
||||||
// size={20}
|
size={20}
|
||||||
// color={MainColor.yellow}
|
color={MainColor.yellow}
|
||||||
// onPress={() =>
|
onPress={() => router.navigate("/")}
|
||||||
// router.navigate("/(application)/(user)/event/create")
|
/>
|
||||||
// }
|
),
|
||||||
// />
|
}}
|
||||||
// ),
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
<ViewWrapper>{handlerReturn()}</ViewWrapper>
|
<ViewWrapper>{handlerReturn()}</ViewWrapper>
|
||||||
</>
|
</>
|
||||||
@@ -497,7 +500,6 @@ const UserNotParticipan_And_DuringEvent = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 🟡 ZONA ACARA BERLANGSUN
|
// 🟡 ZONA ACARA BERLANGSUN
|
||||||
// User sudah terdaftar & Event sedang berlangsung & user harus konfirmasi
|
// User sudah terdaftar & Event sedang berlangsung & user harus konfirmasi
|
||||||
const UserParticipan_And_DuringEvent = ({
|
const UserParticipan_And_DuringEvent = ({
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import {
|
|||||||
ICON_SIZE_XLARGE,
|
ICON_SIZE_XLARGE,
|
||||||
} from "@/constants/constans-value";
|
} from "@/constants/constans-value";
|
||||||
import { useAuth } from "@/hooks/use-auth";
|
import { useAuth } from "@/hooks/use-auth";
|
||||||
|
import { useNotificationStore } from "@/hooks/use-notification-store";
|
||||||
import AdminNotificationBell from "@/screens/Admin/AdminNotificationBell";
|
import AdminNotificationBell from "@/screens/Admin/AdminNotificationBell";
|
||||||
import {
|
import {
|
||||||
adminListMenu,
|
adminListMenu,
|
||||||
|
|||||||
@@ -184,6 +184,11 @@
|
|||||||
14B3DE54EE4049AEB1EADA6B /* Remove signature files (Xcode workaround) */,
|
14B3DE54EE4049AEB1EADA6B /* Remove signature files (Xcode workaround) */,
|
||||||
B4CF5E09DBB44A4FB9CB91B9 /* Remove signature files (Xcode workaround) */,
|
B4CF5E09DBB44A4FB9CB91B9 /* Remove signature files (Xcode workaround) */,
|
||||||
C894BD25C8224984AAD73398 /* Remove signature files (Xcode workaround) */,
|
C894BD25C8224984AAD73398 /* Remove signature files (Xcode workaround) */,
|
||||||
|
F0C608193824414E93E23BC7 /* Remove signature files (Xcode workaround) */,
|
||||||
|
A3E2EDBCFB514A6487E28BEC /* Remove signature files (Xcode workaround) */,
|
||||||
|
0D62979D96BF4B99AB9FBE7C /* Remove signature files (Xcode workaround) */,
|
||||||
|
49B80EF12BE8476C86534CEA /* Remove signature files (Xcode workaround) */,
|
||||||
|
6218417B3C954EFF9B5F4853 /* Remove signature files (Xcode workaround) */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -1013,6 +1018,91 @@
|
|||||||
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
";
|
";
|
||||||
};
|
};
|
||||||
|
F0C608193824414E93E23BC7 /* Remove signature files (Xcode workaround) */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
name = "Remove signature files (Xcode workaround)";
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "
|
||||||
|
echo \"Remove signature files (Xcode workaround)\";
|
||||||
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
|
";
|
||||||
|
};
|
||||||
|
A3E2EDBCFB514A6487E28BEC /* Remove signature files (Xcode workaround) */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
name = "Remove signature files (Xcode workaround)";
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "
|
||||||
|
echo \"Remove signature files (Xcode workaround)\";
|
||||||
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
|
";
|
||||||
|
};
|
||||||
|
0D62979D96BF4B99AB9FBE7C /* Remove signature files (Xcode workaround) */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
name = "Remove signature files (Xcode workaround)";
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "
|
||||||
|
echo \"Remove signature files (Xcode workaround)\";
|
||||||
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
|
";
|
||||||
|
};
|
||||||
|
49B80EF12BE8476C86534CEA /* Remove signature files (Xcode workaround) */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
name = "Remove signature files (Xcode workaround)";
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "
|
||||||
|
echo \"Remove signature files (Xcode workaround)\";
|
||||||
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
|
";
|
||||||
|
};
|
||||||
|
6218417B3C954EFF9B5F4853 /* Remove signature files (Xcode workaround) */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
name = "Remove signature files (Xcode workaround)";
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "
|
||||||
|
echo \"Remove signature files (Xcode workaround)\";
|
||||||
|
rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
|
||||||
|
";
|
||||||
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<string>development</string>
|
<string>development</string>
|
||||||
<key>com.apple.developer.associated-domains</key>
|
<key>com.apple.developer.associated-domains</key>
|
||||||
<array>
|
<array>
|
||||||
<string>applinks:cld-dkr-staging-hipmi.wibudev.com</string>
|
<string>applinks:cld-dkr-hipmi-stg.wibudev.com</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>3</string>
|
<string>4</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
|||||||
@@ -4,10 +4,16 @@ import { ICON_SIZE_SMALL } from "@/constants/constans-value";
|
|||||||
import { useNotificationStore } from "@/hooks/use-notification-store";
|
import { useNotificationStore } from "@/hooks/use-notification-store";
|
||||||
import { Ionicons } from "@expo/vector-icons";
|
import { Ionicons } from "@expo/vector-icons";
|
||||||
import { router } from "expo-router";
|
import { router } from "expo-router";
|
||||||
|
import { useEffect } from "react";
|
||||||
import { Text, View } from "react-native";
|
import { Text, View } from "react-native";
|
||||||
|
|
||||||
export default function AdminNotificationBell() {
|
export default function AdminNotificationBell() {
|
||||||
const { unreadCount } = useNotificationStore();
|
const { unreadCount, syncUnreadCount } = useNotificationStore();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log("Syncing unread count");
|
||||||
|
syncUnreadCount();
|
||||||
|
}, [syncUnreadCount]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{ position: "relative" }}>
|
<View style={{ position: "relative" }}>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
import { ActionIcon, AlertDefaultSystem } from "@/components";
|
import { ActionIcon, AlertDefaultSystem, Spacing } from "@/components";
|
||||||
import { IconDot } from "@/components/_Icon/IconComponent";
|
import { IconDot } from "@/components/_Icon/IconComponent";
|
||||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||||
@@ -16,6 +16,7 @@ import Toast from "react-native-toast-message";
|
|||||||
import { BoxEventDetail } from "./BoxEventDetail";
|
import { BoxEventDetail } from "./BoxEventDetail";
|
||||||
import { EventDetailDrawer } from "./EventDetailDrawer";
|
import { EventDetailDrawer } from "./EventDetailDrawer";
|
||||||
import { EventDetailQRCode } from "./EventDetailQRCode";
|
import { EventDetailQRCode } from "./EventDetailQRCode";
|
||||||
|
import { View } from "react-native";
|
||||||
|
|
||||||
export function Admin_ScreenEventDetail() {
|
export function Admin_ScreenEventDetail() {
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
@@ -24,7 +25,6 @@ export function Admin_ScreenEventDetail() {
|
|||||||
const [data, setData] = useState<any | null>(null);
|
const [data, setData] = useState<any | null>(null);
|
||||||
const [loadData, setLoadData] = useState(false);
|
const [loadData, setLoadData] = useState(false);
|
||||||
|
|
||||||
|
|
||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
useCallback(() => {
|
useCallback(() => {
|
||||||
onLoadData();
|
onLoadData();
|
||||||
@@ -135,7 +135,11 @@ export function Admin_ScreenEventDetail() {
|
|||||||
<>
|
<>
|
||||||
<NewWrapper
|
<NewWrapper
|
||||||
headerComponent={headerComponent}
|
headerComponent={headerComponent}
|
||||||
footerComponent={footerComponent}
|
// footerComponent={
|
||||||
|
// <View style={{ paddingInline: 8 }}>
|
||||||
|
// {footerComponent}
|
||||||
|
// </View>
|
||||||
|
// }
|
||||||
>
|
>
|
||||||
<BoxEventDetail data={data} status={status as string} />
|
<BoxEventDetail data={data} status={status as string} />
|
||||||
|
|
||||||
@@ -146,6 +150,9 @@ export function Admin_ScreenEventDetail() {
|
|||||||
{(status === "publish" || status === "history") && (
|
{(status === "publish" || status === "history") && (
|
||||||
<EventDetailQRCode userId={user?.id || ""} isLoading={loadData} />
|
<EventDetailQRCode userId={user?.id || ""} isLoading={loadData} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{footerComponent}
|
||||||
|
<Spacing />
|
||||||
</NewWrapper>
|
</NewWrapper>
|
||||||
|
|
||||||
<EventDetailDrawer
|
<EventDetailDrawer
|
||||||
|
|||||||
Reference in New Issue
Block a user