@@ -67,13 +67,14 @@ public class AuthUiActivity extends AppCompatActivity {
67
67
@ BindView (R .id .google_provider ) CheckBox mUseGoogleProvider ;
68
68
@ BindView (R .id .facebook_provider ) CheckBox mUseFacebookProvider ;
69
69
@ BindView (R .id .twitter_provider ) CheckBox mUseTwitterProvider ;
70
+ @ BindView (R .id .github_provider ) CheckBox mUseGitHubProvider ;
70
71
@ BindView (R .id .email_provider ) CheckBox mUseEmailProvider ;
71
72
@ BindView (R .id .phone_provider ) CheckBox mUsePhoneProvider ;
72
73
73
- @ BindView (R .id .default_theme ) RadioButton mUseDefaultTheme ;
74
- @ BindView (R .id .green_theme ) RadioButton mUseGreenTheme ;
75
- @ BindView (R .id .purple_theme ) RadioButton mUsePurpleTheme ;
76
- @ BindView (R .id .dark_theme ) RadioButton mUseDarkTheme ;
74
+ @ BindView (R .id .default_theme ) RadioButton mDefaultTheme ;
75
+ @ BindView (R .id .green_theme ) RadioButton mGreenTheme ;
76
+ @ BindView (R .id .purple_theme ) RadioButton mPurpleTheme ;
77
+ @ BindView (R .id .dark_theme ) RadioButton mDarkTheme ;
77
78
78
79
@ BindView (R .id .firebase_logo ) RadioButton mFirebaseLogo ;
79
80
@ BindView (R .id .google_logo ) RadioButton mGoogleLogo ;
@@ -85,13 +86,17 @@ public class AuthUiActivity extends AppCompatActivity {
85
86
@ BindView (R .id .google_privacy ) RadioButton mUseGooglePrivacyPolicy ;
86
87
@ BindView (R .id .firebase_privacy ) RadioButton mUseFirebasePrivacyPolicy ;
87
88
88
- @ BindView (R .id .google_scopes_header ) TextView mGoogleScopesLabel ;
89
+ @ BindView (R .id .google_scopes_header ) TextView mGoogleScopesHeader ;
89
90
@ BindView (R .id .google_scope_drive_file ) CheckBox mGoogleScopeDriveFile ;
90
91
@ BindView (R .id .google_scope_youtube_data ) CheckBox mGoogleScopeYoutubeData ;
91
92
92
- @ BindView (R .id .facebook_permissions_header ) TextView mFacebookScopesLabel ;
93
- @ BindView (R .id .facebook_permission_friends ) CheckBox mFacebookScopeFriends ;
94
- @ BindView (R .id .facebook_permission_photos ) CheckBox mFacebookScopePhotos ;
93
+ @ BindView (R .id .facebook_permissions_header ) TextView mFacebookPermissionsHeader ;
94
+ @ BindView (R .id .facebook_permission_friends ) CheckBox mFacebookPermissionFriends ;
95
+ @ BindView (R .id .facebook_permission_photos ) CheckBox mFacebookPermissionPhotos ;
96
+
97
+ @ BindView (R .id .github_permissions_header ) TextView mGitHubPermissionsHeader ;
98
+ @ BindView (R .id .github_permission_repo ) CheckBox mGitHubPermissionRepo ;
99
+ @ BindView (R .id .github_permission_gist ) CheckBox mGitHubPermissionGist ;
95
100
96
101
@ BindView (R .id .credential_selector_enabled ) CheckBox mEnableCredentialSelector ;
97
102
@ BindView (R .id .hint_selector_enabled ) CheckBox mEnableHintSelector ;
@@ -127,13 +132,13 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
127
132
mUseFacebookProvider .setChecked (false );
128
133
mUseFacebookProvider .setEnabled (false );
129
134
mUseFacebookProvider .setText (R .string .facebook_label_missing_config );
130
- setFacebookScopesEnabled (false );
135
+ setFacebookPermissionsEnabled (false );
131
136
} else {
132
- setFacebookScopesEnabled (mUseFacebookProvider .isChecked ());
137
+ setFacebookPermissionsEnabled (mUseFacebookProvider .isChecked ());
133
138
mUseFacebookProvider .setOnCheckedChangeListener (new OnCheckedChangeListener () {
134
139
@ Override
135
140
public void onCheckedChanged (CompoundButton compoundButton , boolean checked ) {
136
- setFacebookScopesEnabled (checked );
141
+ setFacebookPermissionsEnabled (checked );
137
142
}
138
143
});
139
144
}
@@ -144,12 +149,28 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
144
149
mUseTwitterProvider .setText (R .string .twitter_label_missing_config );
145
150
}
146
151
147
- if (isGoogleMisconfigured () || isFacebookMisconfigured () || isTwitterMisconfigured ()) {
152
+ if (isGitHubMisconfigured ()) {
153
+ mUseGitHubProvider .setChecked (false );
154
+ mUseGitHubProvider .setEnabled (false );
155
+ mUseGitHubProvider .setText (R .string .github_label_missing_config );
156
+ setGitHubPermissionsEnabled (false );
157
+ } else {
158
+ setGitHubPermissionsEnabled (mUseGitHubProvider .isChecked ());
159
+ mUseGitHubProvider .setOnCheckedChangeListener (new OnCheckedChangeListener () {
160
+ @ Override
161
+ public void onCheckedChanged (CompoundButton compoundButton , boolean checked ) {
162
+ setGitHubPermissionsEnabled (checked );
163
+ }
164
+ });
165
+ }
166
+
167
+ if (isGoogleMisconfigured () || isFacebookMisconfigured ()
168
+ || isTwitterMisconfigured () || isGitHubMisconfigured ()) {
148
169
showSnackbar (R .string .configuration_required );
149
170
}
150
171
151
172
if (AppCompatDelegate .getDefaultNightMode () == AppCompatDelegate .MODE_NIGHT_YES ) {
152
- mUseDarkTheme .setChecked (true );
173
+ mDarkTheme .setChecked (true );
153
174
}
154
175
}
155
176
@@ -232,19 +253,19 @@ private void startSignedInActivity(IdpResponse response) {
232
253
233
254
@ OnClick ({R .id .default_theme , R .id .purple_theme , R .id .green_theme , R .id .dark_theme })
234
255
public void toggleDarkTheme () {
235
- int mode = mUseDarkTheme .isChecked () ?
256
+ int mode = mDarkTheme .isChecked () ?
236
257
AppCompatDelegate .MODE_NIGHT_YES : AppCompatDelegate .MODE_NIGHT_AUTO ;
237
258
AppCompatDelegate .setDefaultNightMode (mode );
238
259
getDelegate ().setLocalNightMode (mode );
239
260
}
240
261
241
262
@ StyleRes
242
263
private int getSelectedTheme () {
243
- if (mUseGreenTheme .isChecked ()) {
264
+ if (mGreenTheme .isChecked ()) {
244
265
return R .style .GreenTheme ;
245
266
}
246
267
247
- if (mUsePurpleTheme .isChecked ()) {
268
+ if (mPurpleTheme .isChecked ()) {
248
269
return R .style .PurpleTheme ;
249
270
}
250
271
@@ -279,6 +300,12 @@ private List<IdpConfig> getSelectedProviders() {
279
300
selectedProviders .add (new IdpConfig .TwitterBuilder ().build ());
280
301
}
281
302
303
+ if (mUseGitHubProvider .isChecked ()) {
304
+ selectedProviders .add (new IdpConfig .GitHubBuilder ()
305
+ .setPermissions (getGitHubPermissions ())
306
+ .build ());
307
+ }
308
+
282
309
if (mUseEmailProvider .isChecked ()) {
283
310
selectedProviders .add (new IdpConfig .EmailBuilder ()
284
311
.setRequireName (mRequireName .isChecked ())
@@ -326,16 +353,32 @@ private boolean isTwitterMisconfigured() {
326
353
return twitterConfigs .contains (AuthUI .UNCONFIGURED_CONFIG_VALUE );
327
354
}
328
355
356
+ private boolean isGitHubMisconfigured () {
357
+ List <String > gitHubConfigs = Arrays .asList (
358
+ getString (R .string .firebase_web_host ),
359
+ getString (R .string .github_client_id ),
360
+ getString (R .string .github_client_secret )
361
+ );
362
+
363
+ return gitHubConfigs .contains (AuthUI .UNCONFIGURED_CONFIG_VALUE );
364
+ }
365
+
329
366
private void setGoogleScopesEnabled (boolean enabled ) {
330
- mGoogleScopesLabel .setEnabled (enabled );
367
+ mGoogleScopesHeader .setEnabled (enabled );
331
368
mGoogleScopeDriveFile .setEnabled (enabled );
332
369
mGoogleScopeYoutubeData .setEnabled (enabled );
333
370
}
334
371
335
- private void setFacebookScopesEnabled (boolean enabled ) {
336
- mFacebookScopesLabel .setEnabled (enabled );
337
- mFacebookScopeFriends .setEnabled (enabled );
338
- mFacebookScopePhotos .setEnabled (enabled );
372
+ private void setFacebookPermissionsEnabled (boolean enabled ) {
373
+ mFacebookPermissionsHeader .setEnabled (enabled );
374
+ mFacebookPermissionFriends .setEnabled (enabled );
375
+ mFacebookPermissionPhotos .setEnabled (enabled );
376
+ }
377
+
378
+ private void setGitHubPermissionsEnabled (boolean enabled ) {
379
+ mGitHubPermissionsHeader .setEnabled (enabled );
380
+ mGitHubPermissionRepo .setEnabled (enabled );
381
+ mGitHubPermissionGist .setEnabled (enabled );
339
382
}
340
383
341
384
private List <String > getGoogleScopes () {
@@ -351,15 +394,26 @@ private List<String> getGoogleScopes() {
351
394
352
395
private List <String > getFacebookPermissions () {
353
396
List <String > result = new ArrayList <>();
354
- if (mFacebookScopeFriends .isChecked ()) {
397
+ if (mFacebookPermissionFriends .isChecked ()) {
355
398
result .add ("user_friends" );
356
399
}
357
- if (mFacebookScopePhotos .isChecked ()) {
400
+ if (mFacebookPermissionPhotos .isChecked ()) {
358
401
result .add ("user_photos" );
359
402
}
360
403
return result ;
361
404
}
362
405
406
+ private List <String > getGitHubPermissions () {
407
+ List <String > result = new ArrayList <>();
408
+ if (mGitHubPermissionRepo .isChecked ()) {
409
+ result .add ("repo" );
410
+ }
411
+ if (mGitHubPermissionGist .isChecked ()) {
412
+ result .add ("gist" );
413
+ }
414
+ return result ;
415
+ }
416
+
363
417
private void showSnackbar (@ StringRes int errorMessageRes ) {
364
418
Snackbar .make (mRootView , errorMessageRes , Snackbar .LENGTH_LONG ).show ();
365
419
}
0 commit comments