X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a7385a7a5afb65fe65676a4807dbd0d148bff52e..c2abbaaedb69dba35866a48b745b68f3519cbca1:/src/com/owncloud/android/syncadapter/FileSyncAdapter.java diff --git a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java index 681f6b21..a0ca9881 100644 --- a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -27,6 +27,7 @@ import java.util.Map; import org.apache.jackrabbit.webdav.DavException; import com.owncloud.android.Log_OC; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AuthenticatorActivity; import com.owncloud.android.datamodel.DataStorageManager; @@ -37,7 +38,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UpdateOCVersionOperation; import com.owncloud.android.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity; -import com.owncloud.android.utils.FileStorageUtils; + import android.accounts.Account; import android.accounts.AccountsException; @@ -220,8 +221,13 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { List children = synchFolderOp.getChildren(); fetchChildren(children); // beware of the 'hidden' recursion here! + sendStickyBroadcast(true, remotePath, null); + } else { - if (result.getCode() == RemoteOperationResult.ResultCode.UNAUTHORIZED) { + if (result.getCode() == RemoteOperationResult.ResultCode.UNAUTHORIZED || + // (result.isTemporalRedirection() && result.isIdPRedirection() && + ( result.isIdPRedirection() && + MainApp.getAuthTokenTypeSamlSessionCookie().equals(getClient().getAuthTokenType()))) { mSyncResult.stats.numAuthExceptions++; } else if (result.getException() instanceof DavException) { @@ -267,8 +273,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { fetchData(newFile.getRemotePath(), newFile.getFileId()); // Update folder size on DB - FileDataStorageManager storageManager = new FileDataStorageManager(getAccount(), getContext().getContentResolver()); - storageManager.saveFolderSize(newFile.getFileId()); + getStorageManager().calculateFolderSize(newFile.getFileId()); } } @@ -283,7 +288,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { * @param dirRemotePath Remote path of a folder that was just synchronized (with or without success) */ private void sendStickyBroadcast(boolean inProgress, String dirRemotePath, RemoteOperationResult result) { - Intent i = new Intent(FileSyncService.SYNC_MESSAGE); + Intent i = new Intent(FileSyncService.getSyncMessage()); i.putExtra(FileSyncService.IN_PROGRESS, inProgress); i.putExtra(FileSyncService.ACCOUNT_NAME, getAccount().name); if (dirRemotePath != null) { @@ -303,13 +308,20 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { private void notifyFailedSynchronization() { Notification notification = new Notification(R.drawable.icon, getContext().getString(R.string.sync_fail_ticker), System.currentTimeMillis()); notification.flags |= Notification.FLAG_AUTO_CANCEL; - boolean needsToUpdateCredentials = (mLastFailedResult != null && mLastFailedResult.getCode() == ResultCode.UNAUTHORIZED); + boolean needsToUpdateCredentials = (mLastFailedResult != null && + ( mLastFailedResult.getCode() == ResultCode.UNAUTHORIZED || + // (mLastFailedResult.isTemporalRedirection() && mLastFailedResult.isIdPRedirection() && + ( mLastFailedResult.isIdPRedirection() && + MainApp.getAuthTokenTypeSamlSessionCookie().equals(getClient().getAuthTokenType())) + ) + ); // TODO put something smart in the contentIntent below for all the possible errors notification.contentIntent = PendingIntent.getActivity(getContext().getApplicationContext(), (int)System.currentTimeMillis(), new Intent(), 0); if (needsToUpdateCredentials) { // let the user update credentials with one click Intent updateAccountCredentials = new Intent(getContext(), AuthenticatorActivity.class); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, getAccount()); + updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ENFORCED_UPDATE, true); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_TOKEN); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);