Skip to content

Commit

Permalink
fix: Options for each of the various platforms can now be specified.
Browse files Browse the repository at this point in the history
  • Loading branch information
mathrunet committed Jul 26, 2023
1 parent 1a77ceb commit 928c379
Show file tree
Hide file tree
Showing 5 changed files with 274 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,16 @@ class FirestoreModelAdapter extends ModelAdapter
const FirestoreModelAdapter({
FirebaseFirestore? database,
NoSqlDatabase? localDatabase,
this.options,
FirebaseOptions? options,
this.iosOptions,
this.androidOptions,
this.webOptions,
this.linuxOptions,
this.windowsOptions,
this.macosOptions,
this.prefix,
}) : _database = database,
_options = options,
_localDatabase = localDatabase;

/// The Firestore database instance used in the adapter.
Expand Down Expand Up @@ -117,8 +124,115 @@ class FirestoreModelAdapter extends ModelAdapter

/// Options for initializing Firebase.
///
/// If platform-specific options are specified, they take precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// プラットフォーム固有のオプションが指定されている場合はそちらが優先されます。
FirebaseOptions? get options {
if (UniversalPlatform.isIOS) {
return iosOptions ?? _options;
} else if (UniversalPlatform.isAndroid) {
return androidOptions ?? _options;
} else if (UniversalPlatform.isWeb) {
return webOptions ?? _options;
} else if (UniversalPlatform.isLinux) {
return linuxOptions ?? _options;
} else if (UniversalPlatform.isWindows) {
return windowsOptions ?? _options;
} else if (UniversalPlatform.isMacOS) {
return macosOptions ?? _options;
} else {
return _options;
}
}

/// Options for initializing Firebase.
///
/// If options for other platforms are specified, these are ignored.
///
/// Firebaseを初期化する際のオプション。
///
/// 他のプラットフォーム用のオプションが指定されている場合はこちらは無視されます。
final FirebaseOptions? _options;

/// Options for initializing Firebase.
///
/// Applies to IOS only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// IOSのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? iosOptions;

/// Options for initializing Firebase.
///
/// Applies to Android only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Androidのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? androidOptions;

/// Options for initializing Firebase.
///
/// Applies to Web only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
final FirebaseOptions? options;
///
/// Webのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? webOptions;

/// Options for initializing Firebase.
///
/// Applies to Web only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Webのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? windowsOptions;

/// Options for initializing Firebase.
///
/// Applies to MacOS only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// MacOSのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? macosOptions;

/// Options for initializing Firebase.
///
/// Applies to Linux only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Linuxのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? linuxOptions;

/// Path prefix.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,16 @@ class ListenableFirestoreModelAdapter extends ModelAdapter
/// [prefix]を追加することですべてのパスにプレフィックスを付与することができ、Flavorごとにデータの保存場所を分けるなどの運用が可能です。
const ListenableFirestoreModelAdapter({
FirebaseFirestore? database,
this.options,
FirebaseOptions? options,
this.iosOptions,
this.androidOptions,
this.webOptions,
this.linuxOptions,
this.windowsOptions,
this.macosOptions,
this.prefix,
}) : _database = database;
}) : _options = options,
_database = database;

/// The Firestore database instance used in the adapter.
///
Expand Down Expand Up @@ -89,8 +96,115 @@ class ListenableFirestoreModelAdapter extends ModelAdapter

/// Options for initializing Firebase.
///
/// If platform-specific options are specified, they take precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// プラットフォーム固有のオプションが指定されている場合はそちらが優先されます。
FirebaseOptions? get options {
if (UniversalPlatform.isIOS) {
return iosOptions ?? _options;
} else if (UniversalPlatform.isAndroid) {
return androidOptions ?? _options;
} else if (UniversalPlatform.isWeb) {
return webOptions ?? _options;
} else if (UniversalPlatform.isLinux) {
return linuxOptions ?? _options;
} else if (UniversalPlatform.isWindows) {
return windowsOptions ?? _options;
} else if (UniversalPlatform.isMacOS) {
return macosOptions ?? _options;
} else {
return _options;
}
}

/// Options for initializing Firebase.
///
/// If options for other platforms are specified, these are ignored.
///
/// Firebaseを初期化する際のオプション。
///
/// 他のプラットフォーム用のオプションが指定されている場合はこちらは無視されます。
final FirebaseOptions? _options;

/// Options for initializing Firebase.
///
/// Applies to IOS only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// IOSのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? iosOptions;

/// Options for initializing Firebase.
///
/// Applies to Android only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Androidのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? androidOptions;

/// Options for initializing Firebase.
///
/// Applies to Web only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
final FirebaseOptions? options;
///
/// Webのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? webOptions;

/// Options for initializing Firebase.
///
/// Applies to Web only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Webのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? windowsOptions;

/// Options for initializing Firebase.
///
/// Applies to MacOS only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// MacOSのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? macosOptions;

/// Options for initializing Firebase.
///
/// Applies to Linux only.
///
/// If [options] is specified, this takes precedence.
///
/// Firebaseを初期化する際のオプション。
///
/// Linuxのみに適用されます。
///
/// [options]が指定されている場合はこちらが優先されます。
final FirebaseOptions? linuxOptions;

/// Path prefix.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import 'package:flutter/foundation.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:katana_firebase/katana_firebase.dart';
import 'package:katana_model/katana_model.dart';
import 'package:universal_platform/universal_platform.dart';

export 'package:katana_firebase/katana_firebase.dart';
export 'package:katana_model/katana_model.dart';
Expand Down
Loading

0 comments on commit 928c379

Please sign in to comment.