@@ -13,9 +13,7 @@ import 'package:resonate/models/appwrite_upcomming_room.dart';
1313import  'package:resonate/services/appwrite_service.dart' ;
1414import  'package:resonate/services/room_service.dart' ;
1515import  'package:resonate/themes/theme_controller.dart' ;
16- import  'package:resonate/utils/enums/log_type.dart' ;
1716import  'package:resonate/utils/enums/room_state.dart' ;
18- import  'package:resonate/views/widgets/snackbar.dart' ;
1917
2018import  '../utils/constants.dart' ;
2119import  'auth_state_controller.dart' ;
@@ -42,7 +40,7 @@ class RoomsController extends GetxController {
4240  @override 
4341  void  onInit () async  {
4442    super .onInit ();
45-     roomsIndex =  meilisearchClient.index ('rooms ' );
43+     roomsIndex =  meilisearchClient.index ('live_rooms ' );
4644    upcomingRoomsIndex =  meilisearchClient.index ('upcoming_rooms' );
4745    await  getRooms ();
4846    filteredRooms.value =  rooms;
@@ -182,58 +180,51 @@ class RoomsController extends GetxController {
182180    }
183181    try  {
184182      if  (isUsingMeilisearch) {
185-         final  indexToUse =  isLiveRooms ?  roomsIndex :  upcomingRoomsIndex;
186-         final  meilisearchResult =  await  indexToUse.search (
187-           query,
188-           SearchQuery (
189-             attributesToHighlight:  ['name' ],
190-             attributesToSearchOn:  ['name' ],
191-           ),
192-         );
193-         if  (isLiveRooms) {
194-           filteredRooms.value =  await  convertMeilisearchResults (
195-             meilisearchResult.hits,
196-             isLiveRooms:  true ,
197-           );
198-         } else  {
199-           filteredUpcomingRooms.value =  await  convertMeilisearchResults (
200-             meilisearchResult.hits,
201-             isLiveRooms:  false ,
202-             originalUpcomingRooms:  upcomingRooms ??  [],
183+         try  {
184+           final  indexToUse =  isLiveRooms ?  roomsIndex :  upcomingRoomsIndex;
185+           final  meilisearchResult =  await  indexToUse.search (query);
186+ 
187+           if  (isLiveRooms) {
188+             filteredRooms.value =  await  convertMeilisearchResults (
189+               meilisearchResult.hits,
190+               isLiveRooms:  true ,
191+             );
192+           } else  {
193+             filteredUpcomingRooms.value =  await  convertMeilisearchResults (
194+               meilisearchResult.hits,
195+               isLiveRooms:  false ,
196+               originalUpcomingRooms:  upcomingRooms ??  [],
197+             );
198+           }
199+           return ;
200+         } catch  (meilisearchError) {
201+           log (
202+             'Meilisearch failed, falling back to local search: $meilisearchError ' ,
203203          );
204204        }
205+       }
206+       // Local search 
207+       final  lowerQuery =  query.toLowerCase ();
208+       if  (isLiveRooms) {
209+         filteredRooms.value =  rooms.where ((room) {
210+           return  room.name.toLowerCase ().contains (lowerQuery) || 
211+               room.description.toLowerCase ().contains (lowerQuery) || 
212+               room.tags.any ((tag) =>  tag.toLowerCase ().contains (lowerQuery));
213+         }).toList ();
205214      } else  {
206-         if  (isLiveRooms) {
207-           final  searchResults =  rooms.where ((room) {
208-             return  room.name.toLowerCase ().contains (query.toLowerCase ());
209-           }).toList ();
210-           filteredRooms.value =  searchResults;
211-         } else  {
212-           final  filtered =  (upcomingRooms ??  []).where ((room) {
213-             return  room.name.toLowerCase ().contains (query.toLowerCase ());
214-           }).toList ();
215-           filteredUpcomingRooms.value =  filtered;
216-         }
215+         filteredUpcomingRooms.value =  (upcomingRooms ??  []).where ((room) {
216+           return  room.name.toLowerCase ().contains (lowerQuery) || 
217+               room.description.toLowerCase ().contains (lowerQuery) || 
218+               room.tags.any ((tag) =>  tag.toLowerCase ().contains (lowerQuery));
219+         }).toList ();
217220      }
218221    } catch  (e) {
219-       final  roomType =  isLiveRooms ?  'rooms'  :  'upcoming rooms' ;
220-       log ('Error searching $roomType : $e ' );
222+       log ('Error searching ${isLiveRooms  ? 'rooms'  : 'upcoming rooms' }: $e ' );
221223      if  (isLiveRooms) {
222224        filteredRooms.value =  [];
223225      } else  {
224226        filteredUpcomingRooms.value =  [];
225227      }
226-       final  context =  Get .context;
227-       if  (context !=  null ) {
228-         final  localizations =  AppLocalizations .of (context)! ;
229-         customSnackbar (
230-           localizations.searchError,
231-           isLiveRooms
232-               ?  localizations.searchRoomsError
233-               :  localizations.searchUpcomingRoomsError,
234-           LogType .error,
235-         );
236-       }
237228    } finally  {
238229      if  (isLiveRooms) {
239230        isSearching.value =  false ;
0 commit comments