Skip to content

Commit a3e046c

Browse files
authored
Merge pull request #1060 from zhwanng/master
v3.0.9 - add WebAuthn feature - update some feats - fix some bugs
2 parents 8d1b070 + ff2e85c commit a3e046c

22 files changed

+550
-170
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
targetSdkVersion rootProject.ext.targetSdkVersion
1515
compileSdk rootProject.ext.compileSdkVersion
1616

17-
versionCode 162
18-
versionName "3.0.8"
17+
versionCode 163
18+
versionName "3.0.9"
1919
multiDexEnabled true
2020

2121
resValue "string", "authorities", defaultConfig.applicationId + '.debug.cameraupload.provider'
@@ -194,7 +194,7 @@ android {
194194
implementation 'androidx.core:core-splashscreen:1.0.1'
195195
implementation "androidx.appcompat:appcompat:1.7.0"
196196
implementation "androidx.activity:activity:1.9.3"
197-
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
197+
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
198198
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
199199
implementation "androidx.preference:preference:1.2.1"
200200
// implementation "androidx.datastore:datastore-preferences:1.0.0"

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@
108108
android:name=".ui.account.AccountsActivity"
109109
android:launchMode="singleTop" />
110110

111-
<activity android:name=".ui.account.SingleSignOnActivity" />
111+
<activity android:name=".ui.account.sso.SingleSignOnActivity" />
112112

113-
<activity android:name=".ui.account.SingleSignOnAuthorizeActivity" />
113+
<activity android:name=".ui.account.sso.SingleSignOnAuthorizeActivity" />
114114

115115
<activity android:name=".ui.settings.SettingsActivity" />
116116

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.seafile.seadroid2.framework.data.model;
2+
3+
public class SSOLinkModel {
4+
public String link;
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.seafile.seadroid2.framework.data.model;
2+
3+
public class SSOStatusModel {
4+
public String status;
5+
public String username;
6+
public String apiToken;
7+
}

app/src/main/java/com/seafile/seadroid2/provider/SeafileProvider.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
package com.seafile.seadroid2.provider;
2121

22-
import static android.os.ParcelFileDescriptor.MODE_WRITE_ONLY;
23-
2422
import android.accounts.OnAccountsUpdateListener;
2523
import android.content.Context;
2624
import android.content.res.AssetFileDescriptor;
@@ -418,19 +416,21 @@ public ParcelFileDescriptor openDocument(final String documentId, final String m
418416
throw new FileNotFoundException();
419417
}
420418

421-
422419
int accessMode = ParcelFileDescriptor.parseMode(mode);
423-
boolean writeOnly = (accessMode & MODE_WRITE_ONLY) != 0;
424-
if (writeOnly) {
425-
//So far write operations are not supported.
426-
throw new UnsupportedOperationException();
427-
}
420+
boolean isWriteMode =
421+
(accessMode & ParcelFileDescriptor.MODE_WRITE_ONLY) != 0
422+
||
423+
(accessMode & ParcelFileDescriptor.MODE_READ_WRITE) != 0;
428424

429425
//TODO check sync_time and modified_at
430426

431427
//check local
432428
File file = DataManager.getLocalRepoFile(account, repoModel.repo_id, repoModel.repo_name, path);
433429
if (file.exists()) {
430+
if (isWriteMode && !file.canWrite()) {
431+
throw new UnsupportedOperationException();
432+
}
433+
434434
try {
435435
return makeParcelFileDescriptor(file, mode);
436436
} catch (IOException e) {

app/src/main/java/com/seafile/seadroid2/ui/WidgetUtils.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@ public static void openWith(Context context, File file) {
7272
}
7373
}
7474

75+
public static void openUrlByLocalBrowser(Context context, String url) {
76+
Intent intent = new Intent(Intent.ACTION_VIEW);
77+
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
78+
intent.setData(Uri.parse(url));
79+
80+
boolean isAvailable = isIntentAvailable(context, intent);
81+
if (isAvailable) {
82+
context.startActivity(intent);
83+
} else {
84+
ToastUtils.showLong(R.string.activity_not_found);
85+
}
86+
}
87+
7588
private static boolean isIntentAvailable(Context context, Intent intent) {
7689
if (Build.VERSION.SDK_INT < 30) {
7790
return context.getPackageManager().resolveActivity(intent, 0) != null;

app/src/main/java/com/seafile/seadroid2/ui/account/AccountDetailActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ private void onLoggedIn(Account loginAccount) {
255255
retData.putExtra(SeafileAuthenticatorActivity.ARG_NAME, loginAccount.getName());
256256
retData.putExtra(SeafileAuthenticatorActivity.ARG_AUTH_SESSION_KEY, loginAccount.getSessionKey());
257257
retData.putExtra(SeafileAuthenticatorActivity.ARG_SERVER_URI, loginAccount.getServer());
258+
retData.putExtra(SeafileAuthenticatorActivity.ARG_SHIB, true);
258259
retData.putExtra(TWO_FACTOR_AUTH, binding.rememberDevice.isChecked());
259260
setResult(RESULT_OK, retData);
260261
finish();

app/src/main/java/com/seafile/seadroid2/ui/account/AccountService.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.seafile.seadroid2.ui.account;
22

33
import com.seafile.seadroid2.account.AccountInfo;
4+
import com.seafile.seadroid2.framework.data.model.SSOLinkModel;
5+
import com.seafile.seadroid2.framework.data.model.SSOStatusModel;
46
import com.seafile.seadroid2.framework.data.model.TokenModel;
57

68
import java.util.Map;
@@ -15,7 +17,6 @@
1517
import retrofit2.http.POST;
1618
import retrofit2.http.PartMap;
1719
import retrofit2.http.Path;
18-
import retrofit2.http.Query;
1920

2021
public interface AccountService {
2122

@@ -33,4 +34,10 @@ public interface AccountService {
3334

3435
@GET("api2/account/info/")
3536
Call<AccountInfo> getAccountInfoCall();
37+
38+
@POST("api2/client-sso-link/")
39+
Single<SSOLinkModel> getSsoLink();
40+
41+
@GET("api2/client-sso-link/{token}/")
42+
Single<SSOStatusModel> getSsoStatus(@Path("token") String token);
3643
}

app/src/main/java/com/seafile/seadroid2/ui/account/SeafileAuthenticatorActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import com.seafile.seadroid2.framework.http.HttpIO;
3131
import com.seafile.seadroid2.framework.util.SLogs;
3232
import com.seafile.seadroid2.preferences.ContextStackPreferenceHelper;
33+
import com.seafile.seadroid2.ui.account.sso.SingleSignOnActivity;
34+
import com.seafile.seadroid2.ui.account.sso.SingleSignOnAuthorizeActivity;
3335
import com.seafile.seadroid2.ui.camera_upload.CameraUploadManager;
3436

3537
import java.util.Locale;

app/src/main/java/com/seafile/seadroid2/ui/account/SingleSignOnActivity.java

Lines changed: 0 additions & 131 deletions
This file was deleted.

0 commit comments

Comments
 (0)