diff --git a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt
index a3f9fdb2..9f25cd4a 100644
--- a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt
+++ b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt
@@ -44,6 +44,9 @@ class NotificationHelper(internal val context: Context, internal val notificatio
} else if (e is Exceptions.ServiceUnavailableException) {
App.log.log(Level.SEVERE, "Service unavailable")
messageString = R.string.sync_error_unavailable
+ } else if (e is Exceptions.ReadOnlyException) {
+ App.log.log(Level.SEVERE, "Journal is read only", e)
+ messageString = R.string.sync_error_journal_readonly
} else if (e is Exceptions.HttpException) {
App.log.log(Level.SEVERE, "HTTP Exception during sync", e)
messageString = R.string.sync_error_http_dav
diff --git a/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt b/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt
index 9ba89835..a57dab8b 100644
--- a/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt
+++ b/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt
@@ -34,8 +34,9 @@ abstract class BaseManager {
throw Exceptions.UserInactiveException(response, apiError.detail)
} else if (apiError.code == "associate_not_allowed") {
throw Exceptions.AssociateNotAllowedException(response, apiError.detail)
- }
- }
+ } else if (apiError.code == "journal_owner_inactive") {
+ throw Exceptions.ReadOnlyException(response, apiError.detail)
+ } }
}// Fall through. We want to always throw when unsuccessful.
throw Exceptions.HttpException(response, apiError.detail)
diff --git a/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt b/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt
index b45a9077..cf4ffe8a 100644
--- a/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt
+++ b/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt
@@ -10,6 +10,8 @@ import java.security.GeneralSecurityException
class Exceptions {
class AssociateNotAllowedException(response: Response, message: String?) : HttpException(response, message)
+ class ReadOnlyException(response: Response, message: String?) : HttpException(response, message)
+
class UnauthorizedException(response: Response, message: String?) : HttpException(response, message)
class UserInactiveException(response: Response, message: String?) : HttpException(response, message)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index efce8efd..d8f38515 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -315,6 +315,7 @@
Server error while %s
Could not connect to server while %s
Database error while %s
+ Journal is read only
preparing synchronization
syncronizing journals
querying capabilities