import React, { useState, useEffect } from 'react';
import { View, TouchableOpacity, Text, StyleSheet } from 'react-native';
import { CometChatCalls } from '@cometchat/calls-sdk-react-native';
type Layout = 'TILE' | 'SIDEBAR' | 'SPOTLIGHT';
function LayoutControls() {
const [currentLayout, setCurrentLayout] = useState<Layout>('TILE');
useEffect(() => {
const unsubscribe = CometChatCalls.addEventListener(
'onCallLayoutChanged',
(layout: Layout) => {
setCurrentLayout(layout);
}
);
return () => unsubscribe();
}, []);
const layouts: Layout[] = ['TILE', 'SIDEBAR', 'SPOTLIGHT'];
return (
<View style={styles.container}>
<Text style={styles.label}>Layout: {currentLayout}</Text>
<View style={styles.buttons}>
{layouts.map((layout) => (
<TouchableOpacity
key={layout}
style={[
styles.button,
currentLayout === layout && styles.activeButton,
]}
onPress={() => CometChatCalls.setLayout(layout)}
>
<Text
style={[
styles.buttonText,
currentLayout === layout && styles.activeButtonText,
]}
>
{layout}
</Text>
</TouchableOpacity>
))}
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
padding: 16,
},
label: {
color: '#fff',
fontSize: 14,
marginBottom: 8,
},
buttons: {
flexDirection: 'row',
gap: 8,
},
button: {
backgroundColor: '#333',
paddingHorizontal: 16,
paddingVertical: 8,
borderRadius: 8,
},
activeButton: {
backgroundColor: '#6851D6',
},
buttonText: {
color: '#999',
fontSize: 12,
fontWeight: '600',
},
activeButtonText: {
color: '#fff',
},
});
export default LayoutControls;