Skip to content

Conversation

muzahidul-opti
Copy link
Contributor

@muzahidul-opti muzahidul-opti commented Sep 19, 2025

Summary

  • Add flutter logger support.

Test plan

  • Add new test cases
  • All previous cases should be passed

Issues

  • FSSDK-11853

- Add FlutterOptimizelyLogger class implementing OPTLogger protocol
- Add constants for customLogger and loggerChannel
- Implement FlutterMethodChannel for invoking log method
- Add logger field to OptimizelyFlutterSdk constructor
- Initialize custom logger in OptimizelyClientWrapper
- Create LoggerBridge to handle log method calls
- Implement OptimizelyLogger interface and DefaultOptimizelyLogger class
- Update custom logger initialization in OptimizelyFlutterSdkPlugin
- Adjust logger channel setup in onDetachedFromEngine
- Refactor LoggerBridge to handle log calls from native Swift/Java code properly
- Ensure proper logging when no custom logger is set
- Rename 'OptimizelyLogger.dart' to 'flutter_logger.dart'
- Rename 'LoggerBridge.dart' to 'logger_bridge.dart'
- Modify imports in 'optimizely_client_wrapper.dart' to reflect changes in logger files
- Implement a custom logger class
- Define logLevel property with default debug level
- Define log method to print log messages with custom format
- Rename FlutterOptimizelyLogger to OptimizelyFlutterLogger in Android
- Rename FlutterOptimizelyLogger to OptimizelyFlutterLogger in iOS
- Remove unused log level property in CustomLogger
- Implement channel setter method in OptimizelyFlutterLogger
- Add guard clauses for levels and logger channel availability in log method
- Update channel invocation to happen on main thread
- Set log level in SwiftOptimizelyFlutterSdkPlugin based on parameters
- Simplify DefaultOptimizelyLogger log method
- Update log message formatting in logger bridge for consistency
- Add methods to expose converting log level, checking if a custom logger is set, retrieving the current logger, and resetting the logger state
- Implement a method for simulating method calls
- Add tests for maintaining logger state across multiple operations
- Include a test for handling logger replacement
- Create tests for edge cases including handling empty messages and special characters
- Define LOGGER_CHANNEL constant for OptimizelyFlutterLogger class
- Set up separate FlutterMethodChannel for outgoing log calls
- Update SwiftOptimizelyFlutterSdkPlugin to use the new logger channel
- Add DispatchQueue.main.async for each method call to ensure platform channel messages are sent on the correct thread
- Remove unnecessary comments and TODOs
- Replace direct print statements with AppLogger methods
- Refactor AppLogger to enhance flexibility and ease of use
- Remove comparison to Swift's DispatchQueue.main.async
@muzahidul-opti muzahidul-opti marked this pull request as ready for review September 24, 2025 14:48
- Remove import statement for 'log_level' that is no longer used
- Update import paths for 'flutter_logger' and 'optimizely_flutter_sdk'

test: update test cases in logger_test.dart

- Update test cases to use 'const MethodCall' for creating method calls
- Change null and empty arguments to be created and handled correctly
- Fix missing level or message argument handling scenarios
- Improve handling of invalid level data types in method calls

docs: add comments to improve code clarity in logger_test.dart

- Add comments explaining the purpose of each test group and case
- Include comments for the different scenarios being tested in each case
- Update log message format in CustomLogger class
- Refactor main thread dispatch logic for method channel calls in Utils.swift
- Enhance error handling and main thread dispatch in OptimizelyFlutterLogger.swift
- Modify method channel creation and task queue handling in SwiftOptimizelyFlutterSdkPlugin.swift
- Replace usage of static AppLogger class with separate logging functions
- Introduce individual logger functions for error, warning, info, and debug levels
- Create a default stand-alone logger instance to handle logging operations
- Test calling global logging functions without errors
- Test handling empty messages in global functions
- Test handling special characters in global functions
- Test handling rapid calls to global functions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant