push
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { TouchableOpacity, Text, View, StyleSheet, Platform } from 'react-native'
|
||||
import { TouchableOpacity, Text, View, StyleSheet } from 'react-native'
|
||||
import { Ionicons } from '@expo/vector-icons'
|
||||
import * as WebBrowser from 'expo-web-browser'
|
||||
import { getApiBaseUrl } from '@/lib/api-url'
|
||||
|
||||
interface Attachment {
|
||||
id: string
|
||||
@@ -10,7 +11,7 @@ interface Attachment {
|
||||
mimeType?: string | null
|
||||
}
|
||||
|
||||
const API_URL = process.env.EXPO_PUBLIC_API_URL ?? 'http://localhost:3000'
|
||||
const API_URL = getApiBaseUrl()
|
||||
|
||||
function getFileIcon(mimeType?: string | null): keyof typeof Ionicons.glyphMap {
|
||||
if (!mimeType) return 'document-outline'
|
||||
|
||||
@@ -5,25 +5,29 @@ interface AnmeldeButtonProps {
|
||||
isAngemeldet: boolean
|
||||
onToggle: () => void
|
||||
isLoading: boolean
|
||||
maxTeilnehmer?: number | null
|
||||
teilnehmerAnzahl?: number
|
||||
}
|
||||
|
||||
export function AnmeldeButton({ isAngemeldet, onToggle, isLoading }: AnmeldeButtonProps) {
|
||||
export function AnmeldeButton({ isAngemeldet, onToggle, isLoading, maxTeilnehmer, teilnehmerAnzahl = 0 }: AnmeldeButtonProps) {
|
||||
const isFull = !isAngemeldet && !!maxTeilnehmer && teilnehmerAnzahl >= maxTeilnehmer
|
||||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
onPress={onToggle}
|
||||
disabled={isLoading}
|
||||
disabled={isLoading || isFull}
|
||||
style={[
|
||||
styles.btn,
|
||||
isAngemeldet ? styles.btnRegistered : styles.btnRegister,
|
||||
isLoading && styles.disabled,
|
||||
isAngemeldet ? styles.btnRegistered : isFull ? styles.btnFull : styles.btnRegister,
|
||||
(isLoading || isFull) && styles.disabled,
|
||||
]}
|
||||
activeOpacity={0.82}
|
||||
>
|
||||
{isLoading ? (
|
||||
<ActivityIndicator color={isAngemeldet ? '#52525B' : '#FFFFFF'} />
|
||||
) : (
|
||||
<Text style={[styles.label, isAngemeldet && styles.labelRegistered]}>
|
||||
{isAngemeldet ? '✓ Angemeldet – Abmelden' : 'Jetzt anmelden'}
|
||||
<Text style={[styles.label, (isAngemeldet || isFull) && styles.labelRegistered]}>
|
||||
{isAngemeldet ? '✓ Angemeldet – Abmelden' : isFull ? 'Ausgebucht' : 'Jetzt anmelden'}
|
||||
</Text>
|
||||
)}
|
||||
</TouchableOpacity>
|
||||
@@ -51,6 +55,11 @@ const styles = StyleSheet.create({
|
||||
borderWidth: 1,
|
||||
borderColor: '#E2E8F0',
|
||||
},
|
||||
btnFull: {
|
||||
backgroundColor: '#F4F4F5',
|
||||
borderWidth: 1,
|
||||
borderColor: '#E2E8F0',
|
||||
},
|
||||
disabled: {
|
||||
opacity: 0.5,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user