loadRulesSessionVariables method
Load session and custom scope variables from persistent storage
Implementation
Future<AppContext> loadRulesSessionVariables() async {
try {
final currentSessionId = IdManager.instance.getSessionId();
if (currentSessionId == 'unknown') {
ObslyLogger.debug('Cannot load variables - no valid session ID');
return const AppContext();
}
// Load session variables
final sessionVars = await ObslyStorage.instance.getInternalState<Map>(
'${_sessionVariablesKey}_$currentSessionId',
);
// Load custom scopes
final customScopes = await ObslyStorage.instance.getInternalState<Map>(
'${_customScopesKey}_$currentSessionId',
);
final session = sessionVars != null
? Map<String, dynamic>.from(sessionVars)
: <String, dynamic>{};
final scopes = customScopes != null
? Map<String, dynamic>.from(customScopes)
: <String, dynamic>{};
// Always start with empty execution scope
scopes['session'] = session;
scopes['execution'] = <String, dynamic>{};
ObslyLogger.debug(
'Loaded rules session variables for session: $currentSessionId '
'(session: ${session.length}, custom: ${scopes.length - 2})',
);
return AppContext(
session: session,
execution: <String, dynamic>{}, // Always empty on load
scopes: scopes,
);
} catch (e) {
ObslyLogger.error('Error loading rules session variables: $e');
return const AppContext();
}
}