Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Room Park Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vladislav Bogdashkin
Room Park Android
Commits
ad925ad9
Commit
ad925ad9
authored
Nov 13, 2019
by
Vladislav Bogdashkin
🎣
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resolve localized exception message as Either
parent
8617efc6
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
13 deletions
+21
-13
CustomException.kt
...isual/roompark/domain/custom_exception/CustomException.kt
+0
-2
ScreenController.kt
...ual/roompark/presentation/screen/auth/ScreenController.kt
+4
-5
ScreenViewState.kt
...sual/roompark/presentation/screen/auth/ScreenViewState.kt
+0
-1
either.kt
...n/java/com/biganto/visual/roompark/util/monades/either.kt
+15
-4
SnackBarModule.kt
...isual/roompark/util/view_utils/snackbar/SnackBarModule.kt
+2
-1
No files found.
app/src/main/java/com/biganto/visual/roompark/domain/custom_exception/CustomException.kt
View file @
ad925ad9
...
...
@@ -125,14 +125,12 @@ sealed class CustomApiException(val code:Int,@StringRes val messageStringId: In
,
messageStringId
=
CUSTOM_API_ERROR_RESPONSE_CODE_231_MESSAGE_ID
)
class
TourByIdNotFoundException
()
:
CustomApiException
(
CUSTOM_API_ERROR_RESPONSE_CODE_TOUR_NOT_FOUND
,
messageStringId
=
CUSTOM_API_ERROR_RESPONSE_CODE_TOUR_NOT_FOUND_MESSAGE_ID
)
class
UnknownCustomApiException
(
code
:
Int
,
@StringRes
messageStringId
:
Int
?,
apiMessage
:
String
?)
:
CustomApiException
(
code
,
messageStringId
,
apiMessage
)
}
//as an agreement error message should be correct for user (and localized, if needed) on server-side
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/auth/ScreenController.kt
View file @
ad925ad9
...
...
@@ -69,12 +69,13 @@ class AuthScreenController :
override
fun
render
(
viewState
:
AuthScreenViewState
)
{
super
.
render
(
viewState
)
Timber
.
d
(
"Render state $viewState"
)
when
(
viewState
){
when
(
viewState
as
BaseState
){
is
AuthScreenViewState
.
Idle
->
render
(
viewState
)
is
AuthScreenViewState
.
Authorization
->
render
(
viewState
)
is
AuthScreenViewState
.
SignedIn
->
render
(
viewState
)
is
AuthScreenViewState
.
SignInError
->
render
(
viewState
)
is
AuthScreenViewState
.
SomeError
->
render
(
viewState
)
is
BaseState
.
HandleError
->
render
(
viewState
)
}
}
...
...
@@ -95,14 +96,12 @@ class AuthScreenController :
}
private
fun
render
(
viewState
:
AuthScreenViewState
.
SignInError
){
viewState
.
exception
.
stringId
?.
let
{
snackbar
.
showSnackBar
(
it
)
}
viewState
.
exception
.
message
?.
let
{
snackbar
.
showSnackBar
(
it
,
Snackbar
.
LENGTH_LONG
)
}
viewState
.
exception
.
selectHandler
(
snackbar
::
showSnackBar
,
snackbar
::
showSnackBar
)
signInButton
.
isEnabled
=
true
}
private
fun
render
(
viewState
:
AuthScreenViewState
.
SomeError
){
viewState
.
exception
.
stringId
?.
let
{
snackbar
.
showSnackBar
(
it
)
}
viewState
.
exception
.
message
?.
let
{
snackbar
.
showSnackBar
(
it
,
Snackbar
.
LENGTH_LONG
)
}
viewState
.
exception
.
selectHandler
(
snackbar
::
showSnackBar
,
snackbar
::
showSnackBar
)
}
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/auth/ScreenViewState.kt
View file @
ad925ad9
...
...
@@ -7,7 +7,6 @@ import com.biganto.visual.roompark.util.monades.ExceptionString
* Created by Vladislav Bogdashkin on 30.09.2019.
*/
sealed
class
AuthScreenViewState
:
BigantoBaseViewState
()
{
class
Idle
:
AuthScreenViewState
()
class
Authorization
:
AuthScreenViewState
()
...
...
app/src/main/java/com/biganto/visual/roompark/util/monades/either.kt
View file @
ad925ad9
...
...
@@ -10,10 +10,21 @@ import com.biganto.visual.roompark.domain.custom_exception.CustomApiException
sealed
class
Either
<
out
E
,
out
V
>
{
data class
Left
<
out
E
>(
val
left
:
E
)
:
Either
<
E
,
Nothing
>()
data class
Right
<
out
V
>(
val
right
:
V
)
:
Either
<
Nothing
,
V
>()
}
data class
ExceptionString
(
@StringRes
var
stringId
:
Int
?,
var
message
:
String
?)
{
data class
ExceptionString
(
@StringRes
private
val
stringId
:
Int
?,
private
val
message
:
String
?)
{
val
errorMessage
:
Either
<
Int
,
String
>
fun
selectHandler
(
a1
:(
Int
)->
Unit
,
a2
:(
String
)->
Unit
)
=
when
(
errorMessage
){
is
Either
.
Left
->
a1
(
errorMessage
.
left
)
is
Either
.
Right
->
a2
(
errorMessage
.
right
)
}
constructor
(
e
:
CustomApiException
)
:
this
(
if
(
e
.
message
!=
null
)
null
else
e
.
messageStringId
,
...
...
@@ -21,8 +32,8 @@ data class ExceptionString(@StringRes var stringId: Int?, var message: String?)
)
init
{
assert
(
stringId
!=
null
&&
message
!=
null
)
{
"both values cannot be non-null
"
}
assert
(
stringId
==
null
&&
message
==
null
)
{
"both values cannot be null"
}
assert
(
stringId
==
null
&&
message
==
null
)
{
"both values cannot be null!
"
}
errorMessage
=
if
(
stringId
!=
null
)
Either
.
Left
(
stringId
)
else
Either
.
Right
(
message
!!
)
}
}
\ No newline at end of file
}
app/src/main/java/com/biganto/visual/roompark/util/view_utils/snackbar/SnackBarModule.kt
View file @
ad925ad9
...
...
@@ -80,10 +80,11 @@ interface ISnackBarProvider{
fun
bindRootView
(
rootView
:
View
?)
val
isRootBounded
:
Boolean
val
snackBar
:
Snackbar
?
fun
showSnackBar
(
@StringRes
stringId
:
Int
)
fun
showSnackBar
(
erorrMessage
:
Any
?)
fun
showSnackBar
(
message
:
String
)
fun
showSnackBar
(
message
:
String
,
length
:
Int
)
fun
showSnackBar
(
message
:
String
,
type
:
SnackBarMessageType
,
length
:
Int
)
fun
showSnackBar
(
@StringRes
stringId
:
Int
)
}
enum
class
SnackBarMessageType
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment