@@ -49,18 +49,59 @@ object TokenUtil {
4949 )
5050 .compact()
5151
52- databaseManager.getDatabase().tokenDao.add(
53- Token (- 1 , token, userID, subject.toString()),
54- sqlConnection
55- ) { result, asyncResult ->
56- if (result == null ) {
57- handler.invoke(null , asyncResult)
52+ if (subject != SUBJECT .LOGIN_SESSION )
53+ databaseManager.getDatabase().tokenDao.isAnyTokenExistByUserIDAndSubject(
54+ userID,
55+ subject.toString(),
56+ sqlConnection
57+ ) { exists, asyncResultOfIsAnyTokenExistsByUserIDAndSubject ->
58+ if (exists == null ) {
59+ handler.invoke(null , asyncResultOfIsAnyTokenExistsByUserIDAndSubject)
5860
59- return @add
61+ return @isAnyTokenExistByUserIDAndSubject
62+ }
63+
64+ if (exists)
65+ databaseManager.getDatabase().tokenDao.deleteByUserIDAndSubject(
66+ userID,
67+ subject.toString(),
68+ sqlConnection
69+ ) { resultOfDeleteByUserIDAndSubject, asyncResultOfDeleteByUserIDAndSubject ->
70+ if (resultOfDeleteByUserIDAndSubject == null ) {
71+ handler.invoke(null , asyncResultOfDeleteByUserIDAndSubject)
72+
73+ return @deleteByUserIDAndSubject
74+ }
75+
76+ addToken(databaseManager, token, userID, subject, sqlConnection, handler)
77+ }
78+ else
79+ addToken(databaseManager, token, userID, subject, sqlConnection, handler)
6080 }
81+ else
82+ addToken(databaseManager, token, userID, subject, sqlConnection, handler)
83+ }
84+ }
85+
86+ private fun addToken (
87+ databaseManager : DatabaseManager ,
88+ token : String ,
89+ userID : Int ,
90+ subject : SUBJECT ,
91+ sqlConnection : SQLConnection ,
92+ handler : (token: String? , asyncResult: AsyncResult <* >) -> Unit
93+ ) {
94+ databaseManager.getDatabase().tokenDao.add(
95+ Token (- 1 , token, userID, subject.toString()),
96+ sqlConnection
97+ ) { result, asyncResult ->
98+ if (result == null ) {
99+ handler.invoke(null , asyncResult)
61100
62- handler.invoke(token, asyncResult)
101+ return @add
63102 }
103+
104+ handler.invoke(token, asyncResult)
64105 }
65106 }
66107}
0 commit comments