Skip to content

Commit 7086355

Browse files
committed
feat: Aggiorna la gestione della chat per pulire la sessione corrente o crearne una nuova
1 parent 9685c7d commit 7086355

3 files changed

Lines changed: 87 additions & 45 deletions

File tree

src/components/BotChat/ChatHistoryItem.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export const ChatHistoryItem: React.FC<ChatHistoryItemProps> = ({
3131
}) => {
3232
const formatTimestamp = (date: Date) => {
3333
const now = new Date();
34-
const diffInMs = now.getTime() - date.getTime();
34+
// Add 240 minutes (4 hours) to compensate for timezone offset
35+
const diffInMs = now.getTime() - date.getTime() + (240 * 60 * 1000);
3536
const diffInHours = diffInMs / (1000 * 60 * 60);
3637
const diffInDays = diffInMs / (1000 * 60 * 60 * 24);
3738

src/navigation/screens/BotChat.tsx

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -139,45 +139,69 @@ const BotChat: React.FC = () => {
139139

140140
// Handler per creare una nuova chat
141141
const handleNewChat = () => {
142-
Alert.alert(
143-
"Nuova Chat",
144-
"Vuoi creare una nuova chat? Tutti i messaggi attuali verranno eliminati sia localmente che dal server.",
145-
[
146-
{
147-
text: "Annulla",
148-
style: "cancel"
149-
},
150-
{
151-
text: "Conferma",
152-
onPress: async () => {
153-
try {
154-
// Elimina la cronologia dal server
155-
const serverCleared = await clearChatHistory();
156-
157-
if (!serverCleared) {
158-
// Mostra un avviso ma procedi comunque con la pulizia locale
142+
// Se c'è una chat aperta, semplicemente pulisci e esci dalla sessione
143+
if (currentChatId) {
144+
Alert.alert(
145+
"Pulisci Chat",
146+
"Vuoi pulire la chat corrente? I messaggi verranno rimossi localmente ma la cronologia sul server rimarrà intatta.",
147+
[
148+
{
149+
text: "Annulla",
150+
style: "cancel"
151+
},
152+
{
153+
text: "Conferma",
154+
onPress: () => {
155+
// Pulisci solo localmente senza creare una nuova sessione
156+
setMessages([]);
157+
setCurrentChatId(null);
158+
console.log('✅ Chat pulita e uscito dalla sessione');
159+
}
160+
}
161+
]
162+
);
163+
} else {
164+
// Se non c'è una chat aperta, crea una nuova sessione
165+
Alert.alert(
166+
"Nuova Chat",
167+
"Vuoi creare una nuova chat? Tutti i messaggi attuali verranno eliminati sia localmente che dal server.",
168+
[
169+
{
170+
text: "Annulla",
171+
style: "cancel"
172+
},
173+
{
174+
text: "Conferma",
175+
onPress: async () => {
176+
try {
177+
// Elimina la cronologia dal server
178+
const serverCleared = await clearChatHistory();
179+
180+
if (!serverCleared) {
181+
// Mostra un avviso ma procedi comunque con la pulizia locale
182+
Alert.alert(
183+
"Avviso",
184+
"Non è stato possibile eliminare la cronologia dal server, ma la chat locale verrà comunque resettata.",
185+
[{ text: "OK", onPress: () => initializeChat() }]
186+
);
187+
} else {
188+
// Tutto ok, procedi con la pulizia locale
189+
await initializeChat();
190+
}
191+
} catch (error) {
192+
console.error("Errore durante il reset della chat:", error);
193+
// In caso di errore, procedi comunque con la pulizia locale
159194
Alert.alert(
160-
"Avviso",
161-
"Non è stato possibile eliminare la cronologia dal server, ma la chat locale verrà comunque resettata.",
195+
"Errore",
196+
"Si è verificato un errore durante l'eliminazione della cronologia dal server, ma la chat locale verrà resettata.",
162197
[{ text: "OK", onPress: () => initializeChat() }]
163198
);
164-
} else {
165-
// Tutto ok, procedi con la pulizia locale
166-
await initializeChat();
167199
}
168-
} catch (error) {
169-
console.error("Errore durante il reset della chat:", error);
170-
// In caso di errore, procedi comunque con la pulizia locale
171-
Alert.alert(
172-
"Errore",
173-
"Si è verificato un errore durante l'eliminazione della cronologia dal server, ma la chat locale verrà resettata.",
174-
[{ text: "OK", onPress: () => initializeChat() }]
175-
);
176200
}
177201
}
178-
}
179-
]
180-
);
202+
]
203+
);
204+
}
181205
};
182206

183207
// Handler per cambiare il tipo di modello

src/navigation/screens/Home.tsx

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -428,17 +428,23 @@ const HomeScreen = () => {
428428
};
429429

430430
const handleResetChat = async () => {
431-
console.log('[HOME] Starting new chat (reset current chat)');
432-
433-
try {
434-
// Crea una nuova sessione chat sul server
435-
const chatId = await createNewChat();
436-
setCurrentChatId(chatId);
437-
console.log('✅ Nuova chat creata con ID:', chatId);
438-
} catch (error) {
439-
console.error('❌ Errore durante la creazione della nuova chat:', error);
440-
// Continua comunque con il reset locale anche se fallisce la creazione sul server
431+
// Se c'è una chat aperta, semplicemente pulisci e esci dalla sessione
432+
if (currentChatId) {
433+
console.log('[HOME] Clearing current chat session:', currentChatId);
441434
setCurrentChatId(null);
435+
} else {
436+
console.log('[HOME] Starting new chat (reset current chat)');
437+
438+
try {
439+
// Crea una nuova sessione chat sul server solo se non c'è una chat aperta
440+
const chatId = await createNewChat();
441+
setCurrentChatId(chatId);
442+
console.log('✅ Nuova chat creata con ID:', chatId);
443+
} catch (error) {
444+
console.error('❌ Errore durante la creazione della nuova chat:', error);
445+
// Continua comunque con il reset locale anche se fallisce la creazione sul server
446+
setCurrentChatId(null);
447+
}
442448
}
443449

444450
// Animazione di uscita per i messaggi
@@ -552,10 +558,21 @@ const HomeScreen = () => {
552558
};
553559

554560
const handleNewChat = async () => {
561+
// Se c'è una chat aperta, semplicemente pulisci e esci dalla sessione
562+
if (currentChatId) {
563+
console.log('[HOME] Clearing current chat session:', currentChatId);
564+
setCurrentChatId(null);
565+
setMessages([]);
566+
setChatStarted(false);
567+
setShowChatHistory(false);
568+
console.log('✅ Chat pulita e uscito dalla sessione');
569+
return;
570+
}
571+
572+
// Altrimenti, crea una nuova sessione chat sul server
555573
console.log('[HOME] Starting new chat from history');
556574

557575
try {
558-
// Crea una nuova sessione chat sul server
559576
const chatId = await createNewChat();
560577
setCurrentChatId(chatId);
561578
setMessages([]);

0 commit comments

Comments
 (0)