From 5f4611d65e40eae3ca6191a15f68d69ea5a1c4cb Mon Sep 17 00:00:00 2001 From: Kirill Rogovoy Date: Tue, 20 Jul 2021 21:24:52 +0300 Subject: WIP --- app_expo/models/environment.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app_expo/models/environment.ts (limited to 'app_expo/models/environment.ts') diff --git a/app_expo/models/environment.ts b/app_expo/models/environment.ts new file mode 100644 index 0000000..a29586b --- /dev/null +++ b/app_expo/models/environment.ts @@ -0,0 +1,40 @@ +import { Api } from '../services/api' + +let ReactotronDev +if (__DEV__) { + const { Reactotron } = require('../services/reactotron') + ReactotronDev = Reactotron +} + +/** + * The environment is a place where services and shared dependencies between + * models live. They are made available to every model via dependency injection. + */ +export class Environment { + constructor() { + // create each service + if (__DEV__) { + // dev-only services + this.reactotron = new ReactotronDev() + } + this.api = new Api() + } + + async setup() { + // allow each service to setup + if (__DEV__) { + await this.reactotron.setup() + } + await this.api.setup() + } + + /** + * Reactotron is only available in dev. + */ + reactotron: typeof ReactotronDev + + /** + * Our api. + */ + api: Api +} -- cgit v1.2.3