@@ -217,15 +217,40 @@ def get_identity_segments(identifier, traits = {})
217217 end
218218
219219 identity_model = get_identity_model ( identifier , traits )
220- segment_models = engine . get_identity_segments ( environment , identity_model )
221- segment_models . map { |sm | Flagsmith ::Segments ::Segment . new ( id : sm . id , name : sm . name ) } . compact
220+
221+ context = Flagsmith ::Engine ::EvaluationContext ::Mappers . get_evaluation_context (
222+ environment , identity_model
223+ )
224+
225+ unless context
226+ raise Flagsmith ::ClientError ,
227+ 'Local evaluation required to obtain identity segments'
228+ end
229+
230+ evaluation_result = Flagsmith ::Engine ::Evaluation ::Core . get_evaluation_result ( context )
231+
232+ evaluation_result [ :segments ] . map do |segment_result |
233+ flagsmith_id = segment_result . dig ( :metadata , :flagsmith_id )
234+ next unless flagsmith_id
235+
236+ Flagsmith ::Segments ::Segment . new ( id : flagsmith_id , name : segment_result [ :name ] )
237+ end . compact
222238 end
223239
224240 private
225241
226242 def environment_flags_from_document
227- Flagsmith ::Flags ::Collection . from_feature_state_models (
228- engine . get_environment_feature_states ( environment ) ,
243+ context = Flagsmith ::Engine ::EvaluationContext ::Mappers . get_evaluation_context ( environment )
244+
245+ unless context
246+ raise Flagsmith ::ClientError ,
247+ 'Unable to get flags. No environment present.'
248+ end
249+
250+ evaluation_result = Flagsmith ::Engine ::Evaluation ::Core . get_evaluation_result ( context )
251+
252+ Flagsmith ::Flags ::Collection . from_evaluation_result (
253+ evaluation_result ,
229254 analytics_processor : analytics_processor ,
230255 default_flag_handler : default_flag_handler ,
231256 offline_handler : offline_handler
@@ -235,9 +260,19 @@ def environment_flags_from_document
235260 def get_identity_flags_from_document ( identifier , traits = { } )
236261 identity_model = get_identity_model ( identifier , traits )
237262
238- Flagsmith ::Flags ::Collection . from_feature_state_models (
239- engine . get_identity_feature_states ( environment , identity_model ) ,
240- identity_id : identity_model . composite_key ,
263+ context = Flagsmith ::Engine ::EvaluationContext ::Mappers . get_evaluation_context (
264+ environment , identity_model
265+ )
266+
267+ unless context
268+ raise Flagsmith ::ClientError ,
269+ 'Unable to get flags. No environment present.'
270+ end
271+
272+ evaluation_result = Flagsmith ::Engine ::Evaluation ::Core . get_evaluation_result ( context )
273+
274+ Flagsmith ::Flags ::Collection . from_evaluation_result (
275+ evaluation_result ,
241276 analytics_processor : analytics_processor ,
242277 default_flag_handler : default_flag_handler ,
243278 offline_handler : offline_handler
0 commit comments