Location management - devrath/RunTracer GitHub Wiki
Notes
🗒️
- We have the
run
--> domain
layer where we mention what the domain layer is capable of.
- Actual implementation: We add the
location
module to remain re-usable.
- Once we set this class, the callback will be triggered whenever there is a location change. We convert the callback to flow and give it back.
Architecture
📁 - `RunTracer` (Project)
|
|--- `app`(module)
|
|--- `core`(module)
| |
| |-- `data`(module)
| |-- `domain`(module)
| | |
| | |---`Location`(folder)
| |
| |-- `presentation`(module)
|
|--- `Run`(module)
| |
| |--- `Data` (module)
| |--- `Domain` (module)
| |--- `Presentation` (module)
| |--- `Location` (module)
|_________________________________
- Now the
Location-module
is part of the run-module
itself, So it is nested inside the run-module
.
- We add an
interface
named LocationObserver.kt
in the run-domain
layer.
- We have the
Location-module
where we have the code that fetches the location data from the Android system.
- We implement the
interface
called LocationObserver.kt
in the class AndroidLocationObserver.kt
located in Location-module
.
- The
location folder
containing the app-->core-->domain-->location
will have location-module related data model
classes.
- The
location-module
will have a dependency of core-domain
and run-domain
modules.
- The
domain-module
of the run-module
will have another class called RunningTracker
.
- This class will have the responsibility to switch on and off the location services.
- Also we inject the interface
LocationObserver.kt
in the RunTracker.kt
class.