import 'package:yumi/app/constants/sc_global_config.dart'; import 'package:yumi/shared/data_sources/sources/local/user_manager.dart'; class SCH5UrlUtils { static String appendAppParams(String url) { return _appendQueryParams(url, appendLang: true, appendToken: true); } static String appendToken(String url) { return _appendQueryParams(url, appendLang: false, appendToken: true); } static String _appendQueryParams( String url, { required bool appendLang, required bool appendToken, }) { final trimmedUrl = url.trim(); if (trimmedUrl.isEmpty) { return url; } final uri = Uri.tryParse(trimmedUrl); if (uri == null) { return url; } final queryParameters = {}; uri.queryParametersAll.forEach((key, values) { queryParameters[key] = List.from(values); }); var hasChanges = false; if (appendLang && !_hasQueryKey(queryParameters, 'lang')) { queryParameters['lang'] = SCGlobalConfig.lang; hasChanges = true; } final token = AccountStorage().getToken(); if (appendToken && token.isNotEmpty && !_hasQueryKey(queryParameters, 'token')) { queryParameters['token'] = token; hasChanges = true; } if (!hasChanges) { return url; } return uri.replace(queryParameters: queryParameters).toString(); } static bool _hasQueryKey(Map queryParameters, String key) { final lowerKey = key.toLowerCase(); return queryParameters.keys.any( (queryKey) => queryKey.toLowerCase() == lowerKey, ); } }