|
43 | 43 | import android.view.View; |
44 | 44 | import android.view.ViewTreeObserver; |
45 | 45 | import android.view.WindowManager; |
46 | | -import android.widget.AdapterView; |
47 | | -import android.widget.ArrayAdapter; |
48 | 46 |
|
49 | 47 | import com.google.android.material.appbar.AppBarLayout; |
50 | 48 | import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
51 | 49 | import com.google.android.material.snackbar.Snackbar; |
52 | | -import com.nextcloud.android.lib.resources.tos.GetTermsRemoteOperation; |
53 | | -import com.nextcloud.android.lib.resources.tos.SignTermRemoteOperation; |
54 | | -import com.nextcloud.android.lib.resources.tos.Term; |
55 | | -import com.nextcloud.android.lib.resources.tos.Terms; |
56 | 50 | import com.nextcloud.appReview.InAppReviewHelper; |
57 | 51 | import com.nextcloud.client.account.User; |
58 | 52 | import com.nextcloud.client.appinfo.AppInfo; |
|
69 | 63 | import com.nextcloud.client.network.ClientFactory; |
70 | 64 | import com.nextcloud.client.preferences.AppPreferences; |
71 | 65 | import com.nextcloud.client.utils.IntentUtil; |
72 | | -import com.nextcloud.common.NextcloudClient; |
73 | 66 | import com.nextcloud.model.WorkerState; |
74 | 67 | import com.nextcloud.model.WorkerStateLiveData; |
75 | 68 | import com.nextcloud.utils.BuildHelper; |
76 | 69 | import com.nextcloud.utils.extensions.ActivityExtensionsKt; |
77 | 70 | import com.nextcloud.utils.extensions.BundleExtensionsKt; |
78 | 71 | import com.nextcloud.utils.extensions.FileExtensionsKt; |
79 | 72 | import com.nextcloud.utils.extensions.IntentExtensionsKt; |
80 | | -import com.nextcloud.utils.extensions.TextViewExtensionsKt; |
81 | 73 | import com.nextcloud.utils.fileNameValidator.FileNameValidator; |
82 | 74 | import com.nextcloud.utils.view.FastScrollUtils; |
83 | 75 | import com.owncloud.android.MainApp; |
84 | 76 | import com.owncloud.android.R; |
85 | | -import com.owncloud.android.databinding.DialogShowTosBinding; |
86 | 77 | import com.owncloud.android.databinding.FilesBinding; |
87 | 78 | import com.owncloud.android.datamodel.FileDataStorageManager; |
88 | 79 | import com.owncloud.android.datamodel.MediaFolderType; |
|
117 | 108 | import com.owncloud.android.ui.dialog.SendShareDialog; |
118 | 109 | import com.owncloud.android.ui.dialog.SortingOrderDialogFragment; |
119 | 110 | import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment; |
| 111 | +import com.owncloud.android.ui.dialog.TermsOfServiceDialog; |
120 | 112 | import com.owncloud.android.ui.events.SearchEvent; |
121 | 113 | import com.owncloud.android.ui.events.SyncEventFinished; |
122 | 114 | import com.owncloud.android.ui.events.TokenPushEvent; |
|
157 | 149 | import java.util.ArrayList; |
158 | 150 | import java.util.Collection; |
159 | 151 | import java.util.List; |
160 | | -import java.util.Map; |
161 | 152 | import java.util.Optional; |
162 | 153 |
|
163 | 154 | import javax.inject.Inject; |
@@ -1448,7 +1439,7 @@ public void onReceive(Context context, Intent intent) { |
1448 | 1439 | break; |
1449 | 1440 |
|
1450 | 1441 | case SIGNING_TOS_NEEDED: |
1451 | | - showDialog(); |
| 1442 | + showTermsOfServiceDialog(); |
1452 | 1443 |
|
1453 | 1444 | break; |
1454 | 1445 |
|
@@ -1495,90 +1486,8 @@ public void onReceive(Context context, Intent intent) { |
1495 | 1486 | } |
1496 | 1487 | } |
1497 | 1488 | } |
1498 | | - |
1499 | | - private void showDialog() { |
1500 | | - new Thread(() -> { |
1501 | | - try { |
1502 | | - NextcloudClient client = |
1503 | | - clientFactory.createNextcloudClient(accountManager.getUser()); |
1504 | | - RemoteOperationResult<Terms> result = new GetTermsRemoteOperation() |
1505 | | - .execute(client); |
1506 | | - |
1507 | | - if (result.isSuccess() && |
1508 | | - !result.getResultData().getHasSigned() && |
1509 | | - !result.getResultData().getTerms().isEmpty()) { |
1510 | | - Map<String, String> languages = result.getResultData().getLanguages(); |
1511 | | - List<Term> terms = result.getResultData().getTerms(); |
1512 | | - |
1513 | | - runOnUiThread(() -> { |
1514 | | - DialogShowTosBinding binding = DialogShowTosBinding.inflate(getLayoutInflater()); |
1515 | | - MaterialAlertDialogBuilder builder = |
1516 | | - // custom XML |
1517 | | - new MaterialAlertDialogBuilder(binding.getRoot().getContext()) |
1518 | | - .setView(binding.getRoot()) |
1519 | | - .setTitle(R.string.terms_of_service_title) |
1520 | | - .setNegativeButton(R.string.dialog_close, (dialog, which) -> { |
1521 | | - finishAffinity(); |
1522 | | - }) |
1523 | | - .setPositiveButton(R.string.terms_of_services_agree, (dialog, which) -> { |
1524 | | - dialog.dismiss(); |
1525 | | - |
1526 | | - new Thread(() -> { |
1527 | | - int id = binding.languageDropdown.getSelectedItemPosition(); |
1528 | | - RemoteOperationResult<Void> signResult = new SignTermRemoteOperation(terms.get(id).getId()).execute(client); |
1529 | | - if (signResult.isSuccess()) { |
1530 | | - tosIsShown = false; |
1531 | | - } else { |
1532 | | - runOnUiThread(() -> showInfoBox(R.string.sign_tos_failed)); |
1533 | | - } |
1534 | | - }).start(); |
1535 | | - }); |
1536 | | - |
1537 | | - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.getRoot().getContext(), |
1538 | | - builder); |
1539 | | - |
1540 | | - builder.create(); |
1541 | | - |
1542 | | - TextViewExtensionsKt.setHtmlContent(binding.message, terms.get(0).getRenderedBody()); |
1543 | | - |
1544 | | - ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(binding.getRoot().getContext(), |
1545 | | - android.R.layout.simple_spinner_item); |
1546 | | - |
1547 | | - for (Term term: terms) { |
1548 | | - arrayAdapter.add(languages.get(term.getLanguageCode())); |
1549 | | - } |
1550 | | - |
1551 | | - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
1552 | | - |
1553 | | - |
1554 | | - binding.languageDropdown.setAdapter(arrayAdapter); |
1555 | | - binding.languageDropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { |
1556 | | - @Override |
1557 | | - public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { |
1558 | | - TextViewExtensionsKt.setHtmlContent(binding.message, |
1559 | | - terms.get(position).getRenderedBody()); |
1560 | | - } |
1561 | | - |
1562 | | - @Override |
1563 | | - public void onNothingSelected(AdapterView<?> adapterView) { |
1564 | | - // nothing to do |
1565 | | - } |
1566 | | - }); |
1567 | | - |
1568 | | - if (terms.size() == 1) { |
1569 | | - binding.languageDropdown.setVisibility(View.GONE); |
1570 | | - } |
1571 | | - |
1572 | | - if (!tosIsShown) { |
1573 | | - tosIsShown = true; |
1574 | | - builder.create().show(); |
1575 | | - } |
1576 | | - }); |
1577 | | - } |
1578 | | - } catch (ClientFactory.CreationException e) { |
1579 | | - showInfoBox(R.string.sign_tos_failed); |
1580 | | - } |
1581 | | - }).start(); |
| 1489 | + private void showTermsOfServiceDialog() { |
| 1490 | + new TermsOfServiceDialog().show(getSupportFragmentManager(), "tos"); |
1582 | 1491 | } |
1583 | 1492 |
|
1584 | 1493 | private boolean checkForRemoteOperationError(RemoteOperationResult syncResult) { |
|
0 commit comments