env.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. // lib/env/env.dart
  2. import 'package:appflowy/startup/startup.dart';
  3. import 'package:appflowy_backend/log.dart';
  4. import 'package:envied/envied.dart';
  5. part 'env.g.dart';
  6. /// The environment variables are defined in `.env` file that is located in the
  7. /// appflowy_flutter.
  8. /// Run `dart run build_runner build --delete-conflicting-outputs`
  9. /// to generate the keys from the env file.
  10. ///
  11. /// If you want to regenerate the keys, you need to run `dart run
  12. /// build_runner clean` before running `dart run build_runner build
  13. /// --delete-conflicting-outputs`.
  14. /// Follow the guide on https://supabase.com/docs/guides/auth/social-login/auth-google to setup the auth provider.
  15. ///
  16. @Envied(path: '.env')
  17. abstract class Env {
  18. @EnviedField(
  19. obfuscate: true,
  20. varName: 'CLOUD_TYPE',
  21. defaultValue: '0',
  22. )
  23. static final int cloudType = _Env.cloudType;
  24. /// AppFlowy Cloud Configuration
  25. @EnviedField(
  26. obfuscate: true,
  27. varName: 'APPFLOWY_CLOUD_BASE_URL',
  28. defaultValue: '',
  29. )
  30. static final String afCloudBaseUrl = _Env.afCloudBaseUrl;
  31. @EnviedField(
  32. obfuscate: true,
  33. varName: 'APPFLOWY_CLOUD_WS_BASE_URL',
  34. defaultValue: '',
  35. )
  36. static final String afCloudWSBaseUrl = _Env.afCloudWSBaseUrl;
  37. @EnviedField(
  38. obfuscate: true,
  39. varName: 'APPFLOWY_CLOUD_GOTRUE_URL',
  40. defaultValue: '',
  41. )
  42. static final String afCloudGoTrueUrl = _Env.afCloudGoTrueUrl;
  43. // Supabase Configuration:
  44. @EnviedField(
  45. obfuscate: true,
  46. varName: 'SUPABASE_URL',
  47. defaultValue: '',
  48. )
  49. static final String supabaseUrl = _Env.supabaseUrl;
  50. @EnviedField(
  51. obfuscate: true,
  52. varName: 'SUPABASE_ANON_KEY',
  53. defaultValue: '',
  54. )
  55. static final String supabaseAnonKey = _Env.supabaseAnonKey;
  56. }
  57. bool get isCloudEnabled {
  58. // Only enable supabase in release and develop mode.
  59. if (integrationMode().isRelease || integrationMode().isDevelop) {
  60. return currentCloudType().isEnabled;
  61. } else {
  62. return false;
  63. }
  64. }
  65. bool get isSupabaseEnabled {
  66. // Only enable supabase in release and develop mode.
  67. if (integrationMode().isRelease || integrationMode().isDevelop) {
  68. return currentCloudType() == CloudType.supabase;
  69. } else {
  70. return false;
  71. }
  72. }
  73. bool get isAppFlowyCloudEnabled {
  74. // Only enable appflowy cloud in release and develop mode.
  75. if (integrationMode().isRelease || integrationMode().isDevelop) {
  76. return currentCloudType() == CloudType.appflowyCloud;
  77. } else {
  78. return false;
  79. }
  80. }
  81. enum CloudType {
  82. unknown,
  83. supabase,
  84. appflowyCloud;
  85. bool get isEnabled => this != CloudType.unknown;
  86. }
  87. CloudType currentCloudType() {
  88. final value = Env.cloudType;
  89. if (value == 1) {
  90. if (Env.supabaseUrl.isEmpty || Env.supabaseAnonKey.isEmpty) {
  91. Log.error("Supabase is not configured");
  92. return CloudType.unknown;
  93. } else {
  94. return CloudType.supabase;
  95. }
  96. }
  97. if (value == 2) {
  98. if (Env.afCloudBaseUrl.isEmpty || Env.afCloudWSBaseUrl.isEmpty) {
  99. Log.error("AppFlowy cloud is not configured");
  100. return CloudType.unknown;
  101. } else {
  102. return CloudType.appflowyCloud;
  103. }
  104. }
  105. return CloudType.unknown;
  106. }