From 6acddc2f78aceaa5cdb1c774da50c2c2f4e1ab03 Mon Sep 17 00:00:00 2001 From: ppc Date: Tue, 3 Sep 2024 15:02:11 +0100 Subject: [PATCH] add server share option to context menu --- amnet-native/app/CardManager.tsx | 9 +++++---- amnet-native/app/ServerCardIn.tsx | 2 +- amnet-native/app/ServerManager.tsx | 29 +++++++++++++++++++---------- amnet-native/models/AMServer.ts | 4 ++++ 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/amnet-native/app/CardManager.tsx b/amnet-native/app/CardManager.tsx index 7f788d2..1029579 100644 --- a/amnet-native/app/CardManager.tsx +++ b/amnet-native/app/CardManager.tsx @@ -26,12 +26,12 @@ function CardEntry(props: { card: AMCard, navigation: any }) { return; // edit card - case "1": + case "1,0": props.navigation.navigate('add-card', {cardId: props.card.code, cardName: props.card.name}); return; // remove card - case "2,0": + case "1,1": realm.write(() => realm.delete(props.card)); return; } @@ -42,11 +42,12 @@ function CardEntry(props: { card: AMCard, navigation: any }) { onPress={e => callback(e.nativeEvent?.indexPath)} actions={[ {title: "Copy Card Number", systemIcon: "doc.on.doc"}, - {title: "Edit Card", systemIcon: "square.and.pencil"}, { title: "", inlineChildren: true, - actions: [{title: "Delete Card", destructive: true, systemIcon: "trash"}] + actions: [ + {title: "Edit Card", systemIcon: "square.and.pencil"}, + {title: "Delete Card", destructive: true, systemIcon: "trash"}] }]}> diff --git a/amnet-native/app/ServerCardIn.tsx b/amnet-native/app/ServerCardIn.tsx index 28fa3df..9906a26 100644 --- a/amnet-native/app/ServerCardIn.tsx +++ b/amnet-native/app/ServerCardIn.tsx @@ -57,7 +57,7 @@ export default function ServerCardIn({route, navigation}) { navigation.setOptions({ title: server.serverName, headerRight: () => ( - Share.share({url: `http://card.ppc.moe/#/servers/add?address=${encodeURIComponent(server.serverAddress)}`})}> + Share.share({url: server.shareUrl})}> ) diff --git a/amnet-native/app/ServerManager.tsx b/amnet-native/app/ServerManager.tsx index 2d9a201..03efac8 100644 --- a/amnet-native/app/ServerManager.tsx +++ b/amnet-native/app/ServerManager.tsx @@ -1,7 +1,7 @@ import {Button, Paragraph, useTheme} from "react-native-paper"; import {Globe, History, Plus, ServerOff} from "lucide-react-native"; -import {FlatList, NativeSyntheticEvent, Text, View} from "react-native"; import React, {useCallback, useLayoutEffect, useMemo, useState} from "react"; +import {FlatList, NativeSyntheticEvent, Share, Text, View} from "react-native"; import ContextMenu, {ContextMenuOnPressNativeEvent} from "react-native-context-menu-view"; import {EmptyStatePlaceholder} from "../components/EmptyStatePlaceholder"; import {AMUICard, AMUICardDetail} from "../components/AMUICard"; @@ -21,23 +21,32 @@ function ServerCard(props: { server: AMServer, navigation: any }) { }, [props.navigation, props.server]); const pageContextMenuCallback = useCallback((action: NativeSyntheticEvent) => { - switch (action.nativeEvent.index) { - case 0: + switch (action.nativeEvent.indexPath.toString()) { + case "0": pageCallback(); - break; + return; - case 1: - realm.write(() => { - realm.delete(props.server); - }); - break; + case "1,0": + Share.share({url: props.server.shareUrl}); + return; + + case "1,1": + realm.write(() => realm.delete(props.server)); + return; } }, [realm, props.server]); return ( diff --git a/amnet-native/models/AMServer.ts b/amnet-native/models/AMServer.ts index 59ad780..7b16bce 100644 --- a/amnet-native/models/AMServer.ts +++ b/amnet-native/models/AMServer.ts @@ -12,6 +12,10 @@ export class AMServer extends Realm.Object implements AMServerInfoResp lastUsed: Date; createdAt: Date; + + get shareUrl() { + return `http://card.ppc.moe/#/servers/add?address=${encodeURIComponent(this.serverAddress)}`; + } static generate(serverAddress: string) { return {