14
14
#include < string>
15
15
16
16
#include " log.h"
17
- #include " messages.h"
17
+ #include " messages.g. h"
18
18
19
- namespace {
19
+ using ::firebase::App;
20
+
21
+ namespace firebase_core_tizen {
20
22
21
23
class FirebaseCoreTizenPlugin : public flutter ::Plugin,
22
24
public FirebaseCoreHostApi,
@@ -69,7 +71,31 @@ FirebaseCoreTizenPlugin::FirebaseCoreTizenPlugin(
69
71
70
72
FirebaseCoreTizenPlugin::~FirebaseCoreTizenPlugin () {}
71
73
72
- static PigeonFirebaseOptions FirebaseOptionsToPigeonOptions (
74
+ // Convert a Pigeon FirebaseOptions to a Firebase Options.
75
+ firebase::AppOptions PigeonFirebaseOptionsToAppOptions (
76
+ const PigeonFirebaseOptions& pigeon_options) {
77
+ firebase::AppOptions app_options;
78
+
79
+ app_options.set_api_key (pigeon_options.api_key ().c_str ());
80
+ app_options.set_app_id (pigeon_options.app_id ().c_str ());
81
+ app_options.set_messaging_sender_id (
82
+ pigeon_options.messaging_sender_id ().c_str ());
83
+ app_options.set_project_id (pigeon_options.project_id ().c_str ());
84
+ if (pigeon_options.database_u_r_l ()) {
85
+ app_options.set_database_url (pigeon_options.database_u_r_l ()->c_str ());
86
+ }
87
+ if (pigeon_options.storage_bucket ()) {
88
+ app_options.set_storage_bucket (pigeon_options.storage_bucket ()->c_str ());
89
+ }
90
+ if (pigeon_options.tracking_id ()) {
91
+ app_options.set_ga_tracking_id (pigeon_options.tracking_id ()->c_str ());
92
+ }
93
+
94
+ return app_options;
95
+ }
96
+
97
+ // Convert a AppOptions to PigeonInitializeOption
98
+ PigeonFirebaseOptions OptionsFromFIROptions (
73
99
const firebase::AppOptions& options) {
74
100
PigeonFirebaseOptions pigeon_options;
75
101
@@ -90,25 +116,12 @@ static PigeonFirebaseOptions FirebaseOptionsToPigeonOptions(
90
116
return pigeon_options;
91
117
}
92
118
93
- static firebase::AppOptions PigeonOptionsToFirebaseOptions (
94
- const PigeonFirebaseOptions& options) {
95
- firebase::AppOptions app_options;
96
-
97
- app_options.set_api_key (options.api_key ().c_str ());
98
- app_options.set_app_id (options.app_id ().c_str ());
99
- app_options.set_messaging_sender_id (options.messaging_sender_id ().c_str ());
100
- app_options.set_project_id (options.project_id ().c_str ());
101
- if (options.database_u_r_l ()) {
102
- app_options.set_database_url (options.database_u_r_l ()->c_str ());
103
- }
104
- if (options.storage_bucket ()) {
105
- app_options.set_storage_bucket (options.storage_bucket ()->c_str ());
106
- }
107
- if (options.tracking_id ()) {
108
- app_options.set_ga_tracking_id (options.tracking_id ()->c_str ());
109
- }
110
-
111
- return app_options;
119
+ // Convert a firebase::App to PigeonInitializeResponse
120
+ PigeonInitializeResponse AppToPigeonInitializeResponse (const App& app) {
121
+ PigeonInitializeResponse response = PigeonInitializeResponse ();
122
+ response.set_name (app.name ());
123
+ response.set_options (OptionsFromFIROptions (app.options ()));
124
+ return response;
112
125
}
113
126
114
127
void FirebaseCoreTizenPlugin::InitializeApp (
@@ -118,33 +131,29 @@ void FirebaseCoreTizenPlugin::InitializeApp(
118
131
firebase::App* app = firebase::App::GetInstance (app_name.c_str ());
119
132
if (!app) {
120
133
app = firebase::App::Create (
121
- PigeonOptionsToFirebaseOptions (initialize_app_request),
134
+ PigeonFirebaseOptionsToAppOptions (initialize_app_request),
122
135
app_name.c_str ());
123
136
}
124
137
125
- PigeonInitializeResponse message_response;
126
- message_response.set_name (app->name ());
127
- message_response.set_options (FirebaseOptionsToPigeonOptions (app->options ()));
128
-
129
- result (message_response);
138
+ // Send back the result to Flutter
139
+ result (AppToPigeonInitializeResponse (*app));
130
140
}
131
141
132
142
void FirebaseCoreTizenPlugin::InitializeCore (
133
143
std::function<void (ErrorOr<flutter::EncodableList> reply)> result) {
134
- flutter::EncodableList response;
144
+ // TODO: Missing function to get the list of currently initialized apps
145
+ std::vector<PigeonInitializeResponse> initializedApps;
146
+ std::vector<App*> all_apps = App::GetApps ();
147
+ for (const App* app : all_apps) {
148
+ initializedApps.push_back (AppToPigeonInitializeResponse (*app));
149
+ }
135
150
136
- std::vector<firebase::App*> firebase_apps = firebase::App::GetApps ();
137
- for (auto app : firebase_apps) {
138
- PigeonInitializeResponse message_response;
139
- message_response.set_name (app->name ());
140
- message_response.set_options (
141
- FirebaseOptionsToPigeonOptions (app->options ()));
151
+ flutter::EncodableList encodableList;
142
152
143
- response. push_back (
144
- flutter::EncodableValue (message_response. ToEncodableMap () ));
153
+ for ( const auto & item : initializedApps) {
154
+ encodableList. push_back ( flutter::CustomEncodableValue (item ));
145
155
}
146
-
147
- result (response);
156
+ result (encodableList);
148
157
}
149
158
150
159
void FirebaseCoreTizenPlugin::OptionsFromResource (
@@ -177,11 +186,11 @@ void FirebaseCoreTizenPlugin::Delete(
177
186
result (std::nullopt);
178
187
}
179
188
180
- } // namespace
189
+ } // namespace firebase_core_tizen
181
190
182
191
void FirebaseCoreTizenPluginRegisterWithRegistrar (
183
192
FlutterDesktopPluginRegistrarRef registrar) {
184
- FirebaseCoreTizenPlugin::RegisterWithRegistrar (
193
+ firebase_core_tizen:: FirebaseCoreTizenPlugin::RegisterWithRegistrar (
185
194
flutter::PluginRegistrarManager::GetInstance ()
186
195
->GetRegistrar <flutter::PluginRegistrar>(registrar));
187
196
}
0 commit comments