Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
Administrator
AloqaIM-Android
Commits
72652690
Commit
72652690
authored
Oct 03, 2017
by
Rafael Kellermann Streit
Committed by
GitHub
Oct 03, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #507 from RocketChat/develop
[RELEASE] Merge develop into master
parents
189a3c69
a2acf159
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
71 additions
and
61 deletions
+71
-61
DDPClientImpl.java
.../src/main/java/chat/rocket/android_ddp/DDPClientImpl.java
+9
-6
build.gradle
app/build.gradle
+2
-2
MainActivity.java
.../main/java/chat/rocket/android/activity/MainActivity.java
+7
-18
RoomFragment.java
...a/chat/rocket/android/fragment/chatroom/RoomFragment.java
+42
-30
SidebarMainFragment.java
.../rocket/android/fragment/sidebar/SidebarMainFragment.java
+2
-3
SidebarMainPresenter.java
...rocket/android/fragment/sidebar/SidebarMainPresenter.java
+3
-1
RocketChatService.java
...n/java/chat/rocket/android/service/RocketChatService.java
+5
-0
RealmHelper.java
.../main/java/chat/rocket/persistence/realm/RealmHelper.java
+1
-1
No files found.
android-ddp/src/main/java/chat/rocket/android_ddp/DDPClientImpl.java
View file @
72652690
...
@@ -174,7 +174,7 @@ public class DDPClientImpl {
...
@@ -174,7 +174,7 @@ public class DDPClientImpl {
disposables
.
clear
();
disposables
.
clear
();
}
}
},
},
err
->
task
.
s
etError
(
new
DDPClientCallback
.
Ping
.
Timeout
(
client
))
err
->
task
.
tryS
etError
(
new
DDPClientCallback
.
Ping
.
Timeout
(
client
))
)
)
);
);
...
@@ -213,7 +213,7 @@ public class DDPClientImpl {
...
@@ -213,7 +213,7 @@ public class DDPClientImpl {
"error"
))
{
"error"
))
{
String
_id
=
response
.
optString
(
"id"
);
String
_id
=
response
.
optString
(
"id"
);
if
(
id
.
equals
(
_id
))
{
if
(
id
.
equals
(
_id
))
{
task
.
s
etError
(
new
DDPSubscription
.
NoSub
.
Error
(
client
,
id
,
task
.
tryS
etError
(
new
DDPSubscription
.
NoSub
.
Error
(
client
,
id
,
response
.
optJSONObject
(
"error"
)));
response
.
optJSONObject
(
"error"
)));
disposables
.
clear
();
disposables
.
clear
();
}
}
...
@@ -284,7 +284,7 @@ public class DDPClientImpl {
...
@@ -284,7 +284,7 @@ public class DDPClientImpl {
String
_id
=
response
.
optString
(
"id"
);
String
_id
=
response
.
optString
(
"id"
);
if
(
id
.
equals
(
_id
))
{
if
(
id
.
equals
(
_id
))
{
if
(!
response
.
isNull
(
"error"
))
{
if
(!
response
.
isNull
(
"error"
))
{
task
.
s
etError
(
new
DDPClientCallback
.
RPC
.
Error
(
client
,
id
,
task
.
tryS
etError
(
new
DDPClientCallback
.
RPC
.
Error
(
client
,
id
,
response
.
optJSONObject
(
"error"
)));
response
.
optJSONObject
(
"error"
)));
}
else
{
}
else
{
String
result
=
response
.
optString
(
"result"
);
String
result
=
response
.
optString
(
"result"
);
...
@@ -296,7 +296,7 @@ public class DDPClientImpl {
...
@@ -296,7 +296,7 @@ public class DDPClientImpl {
},
},
err
->
{
err
->
{
if
(
err
instanceof
TimeoutException
)
{
if
(
err
instanceof
TimeoutException
)
{
task
.
s
etError
(
new
DDPClientCallback
.
RPC
.
Timeout
(
client
));
task
.
tryS
etError
(
new
DDPClientCallback
.
RPC
.
Timeout
(
client
));
}
}
}
}
)
)
...
@@ -427,7 +427,7 @@ public class DDPClientImpl {
...
@@ -427,7 +427,7 @@ public class DDPClientImpl {
}
}
},
},
err
->
{
err
->
{
task
.
trySetError
(
new
Exception
(
err
));
setTaskError
(
task
,
new
Exception
(
err
));
disposables
.
clear
();
disposables
.
clear
();
}
}
)
)
...
@@ -442,7 +442,10 @@ public class DDPClientImpl {
...
@@ -442,7 +442,10 @@ public class DDPClientImpl {
}
}
}
}
private
void
setTaskError
(
TaskCompletionSource
<?
extends
RxWebSocketCallback
.
Base
>
task
,
Throwable
throwable
)
{
private
void
setTaskError
(
TaskCompletionSource
task
,
Throwable
throwable
)
{
if
(
task
.
getTask
().
isCompleted
())
{
return
;
}
if
(
throwable
instanceof
Exception
)
{
if
(
throwable
instanceof
Exception
)
{
task
.
setError
((
Exception
)
throwable
);
task
.
setError
((
Exception
)
throwable
);
}
else
{
}
else
{
...
...
app/build.gradle
View file @
72652690
...
@@ -46,8 +46,8 @@ android {
...
@@ -46,8 +46,8 @@ android {
applicationId
"chat.rocket.android"
applicationId
"chat.rocket.android"
minSdkVersion
16
minSdkVersion
16
targetSdkVersion
rootProject
.
ext
.
targetSdkVersion
targetSdkVersion
rootProject
.
ext
.
targetSdkVersion
versionCode
4
0
versionCode
4
1
versionName
"1.0.2
0
"
versionName
"1.0.2
1
"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
vectorDrawables
.
useSupportLibrary
=
true
vectorDrawables
.
useSupportLibrary
=
true
multiDexEnabled
true
multiDexEnabled
true
...
...
app/src/main/java/chat/rocket/android/activity/MainActivity.java
View file @
72652690
...
@@ -121,14 +121,14 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
...
@@ -121,14 +121,14 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
}
}
}
}
});
});
}
if
(
toolbar
!=
null
)
{
if
(
toolbar
!=
null
)
{
toolbar
.
setNavigationOnClickListener
(
view
->
{
toolbar
.
setNavigationOnClickListener
(
view
->
{
if
(
pane
.
isSlideable
()
&&
!
pane
.
isOpen
())
{
if
(
pane
.
isSlideable
()
&&
!
pane
.
isOpen
())
{
pane
.
openPane
();
pane
.
openPane
();
}
}
});
});
}
}
}
}
}
...
@@ -251,12 +251,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
...
@@ -251,12 +251,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
R
.
string
.
server_config_activity_authenticating
,
Snackbar
.
LENGTH_INDEFINITE
));
R
.
string
.
server_config_activity_authenticating
,
Snackbar
.
LENGTH_INDEFINITE
));
}
}
public
void
showLogoutMessage
()
{
statusTicker
.
updateStatus
(
StatusTicker
.
STATUS_LOGGING_OUT
,
Snackbar
.
make
(
findViewById
(
getLayoutContainerForFragment
()),
"Logging Out..."
,
Snackbar
.
LENGTH_INDEFINITE
));
}
@Override
@Override
public
void
showConnectionOk
()
{
public
void
showConnectionOk
()
{
statusTicker
.
updateStatus
(
StatusTicker
.
STATUS_DISMISS
,
null
);
statusTicker
.
updateStatus
(
StatusTicker
.
STATUS_DISMISS
,
null
);
...
@@ -314,11 +308,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
...
@@ -314,11 +308,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
}
}
}
}
@DebugLog
public
void
hideLogoutMessage
()
{
statusTicker
.
updateStatus
(
StatusTicker
.
STATUS_DISMISS
,
null
);
}
@DebugLog
@DebugLog
public
void
onLogout
()
{
public
void
onLogout
()
{
if
(
new
RocketChatCache
(
getApplicationContext
()).
getSelectedServerHostname
()
==
null
)
{
if
(
new
RocketChatCache
(
getApplicationContext
()).
getSelectedServerHostname
()
==
null
)
{
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomFragment.java
View file @
72652690
...
@@ -34,6 +34,7 @@ import chat.rocket.android.fragment.sidebar.SidebarMainFragment;
...
@@ -34,6 +34,7 @@ import chat.rocket.android.fragment.sidebar.SidebarMainFragment;
import
chat.rocket.android.helper.AbsoluteUrlHelper
;
import
chat.rocket.android.helper.AbsoluteUrlHelper
;
import
chat.rocket.android.helper.FileUploadHelper
;
import
chat.rocket.android.helper.FileUploadHelper
;
import
chat.rocket.android.helper.LoadMoreScrollListener
;
import
chat.rocket.android.helper.LoadMoreScrollListener
;
import
chat.rocket.android.helper.Logger
;
import
chat.rocket.android.helper.OnBackPressListener
;
import
chat.rocket.android.helper.OnBackPressListener
;
import
chat.rocket.android.helper.RecyclerViewAutoScrollManager
;
import
chat.rocket.android.helper.RecyclerViewAutoScrollManager
;
import
chat.rocket.android.helper.RecyclerViewScrolledToBottomListener
;
import
chat.rocket.android.helper.RecyclerViewScrolledToBottomListener
;
...
@@ -49,6 +50,7 @@ import chat.rocket.android.layouthelper.extra_action.upload.AbstractUploadAction
...
@@ -49,6 +50,7 @@ import chat.rocket.android.layouthelper.extra_action.upload.AbstractUploadAction
import
chat.rocket.android.layouthelper.extra_action.upload.AudioUploadActionItem
;
import
chat.rocket.android.layouthelper.extra_action.upload.AudioUploadActionItem
;
import
chat.rocket.android.layouthelper.extra_action.upload.ImageUploadActionItem
;
import
chat.rocket.android.layouthelper.extra_action.upload.ImageUploadActionItem
;
import
chat.rocket.android.layouthelper.extra_action.upload.VideoUploadActionItem
;
import
chat.rocket.android.layouthelper.extra_action.upload.VideoUploadActionItem
;
import
chat.rocket.android.log.RCLog
;
import
chat.rocket.android.renderer.RocketChatUserStatusProvider
;
import
chat.rocket.android.renderer.RocketChatUserStatusProvider
;
import
chat.rocket.android.service.ConnectivityManager
;
import
chat.rocket.android.service.ConnectivityManager
;
import
chat.rocket.android.service.temp.DeafultTempSpotlightRoomCaller
;
import
chat.rocket.android.service.temp.DeafultTempSpotlightRoomCaller
;
...
@@ -340,28 +342,30 @@ public class RoomFragment extends AbstractChatRoomFragment implements
...
@@ -340,28 +342,30 @@ public class RoomFragment extends AbstractChatRoomFragment implements
SlidingPaneLayout
subPane
=
getActivity
().
findViewById
(
R
.
id
.
sub_sliding_pane
);
SlidingPaneLayout
subPane
=
getActivity
().
findViewById
(
R
.
id
.
sub_sliding_pane
);
sidebarFragment
=
(
SidebarMainFragment
)
getActivity
().
getSupportFragmentManager
().
findFragmentById
(
R
.
id
.
sidebar_fragment_container
);
sidebarFragment
=
(
SidebarMainFragment
)
getActivity
().
getSupportFragmentManager
().
findFragmentById
(
R
.
id
.
sidebar_fragment_container
);
pane
.
setPanelSlideListener
(
new
SlidingPaneLayout
.
PanelSlideListener
()
{
if
(
pane
!=
null
)
{
@Override
pane
.
setPanelSlideListener
(
new
SlidingPaneLayout
.
PanelSlideListener
()
{
public
void
onPanelSlide
(
View
view
,
float
v
)
{
@Override
messageFormManager
.
enableComposingText
(
false
);
public
void
onPanelSlide
(
View
view
,
float
v
)
{
sidebarFragment
.
clearSearchViewFocus
();
messageFormManager
.
enableComposingText
(
false
);
//Ref: ActionBarDrawerToggle#setProgress
sidebarFragment
.
clearSearchViewFocus
();
toolbar
.
setNavigationIconProgress
(
v
);
//Ref: ActionBarDrawerToggle#setProgress
}
toolbar
.
setNavigationIconProgress
(
v
);
}
@Override
@Override
public
void
onPanelOpened
(
View
view
)
{
public
void
onPanelOpened
(
View
view
)
{
toolbar
.
setNavigationIconVerticalMirror
(
true
);
toolbar
.
setNavigationIconVerticalMirror
(
true
);
}
}
@Override
@Override
public
void
onPanelClosed
(
View
view
)
{
public
void
onPanelClosed
(
View
view
)
{
messageFormManager
.
enableComposingText
(
true
);
messageFormManager
.
enableComposingText
(
true
);
toolbar
.
setNavigationIconVerticalMirror
(
false
);
toolbar
.
setNavigationIconVerticalMirror
(
false
);
subPane
.
closePane
();
subPane
.
closePane
();
closeUserActionContainer
();
closeUserActionContainer
();
}
}
});
});
}
}
}
public
void
closeUserActionContainer
()
{
public
void
closeUserActionContainer
()
{
...
@@ -537,6 +541,8 @@ public class RoomFragment extends AbstractChatRoomFragment implements
...
@@ -537,6 +541,8 @@ public class RoomFragment extends AbstractChatRoomFragment implements
try
{
try
{
inputContentInfo
.
releasePermission
();
inputContentInfo
.
releasePermission
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
RCLog
.
e
(
e
);
Logger
.
report
(
e
);
}
}
return
true
;
return
true
;
...
@@ -552,9 +558,11 @@ public class RoomFragment extends AbstractChatRoomFragment implements
...
@@ -552,9 +558,11 @@ public class RoomFragment extends AbstractChatRoomFragment implements
@Override
@Override
public
void
setupWith
(
RocketChatAbsoluteUrl
rocketChatAbsoluteUrl
)
{
public
void
setupWith
(
RocketChatAbsoluteUrl
rocketChatAbsoluteUrl
)
{
token
=
rocketChatAbsoluteUrl
.
getToken
();
if
(
rocketChatAbsoluteUrl
!=
null
)
{
userId
=
rocketChatAbsoluteUrl
.
getUserId
();
token
=
rocketChatAbsoluteUrl
.
getToken
();
messageListAdapter
.
setAbsoluteUrl
(
rocketChatAbsoluteUrl
);
userId
=
rocketChatAbsoluteUrl
.
getUserId
();
messageListAdapter
.
setAbsoluteUrl
(
rocketChatAbsoluteUrl
);
}
}
}
@Override
@Override
...
@@ -657,12 +665,16 @@ public class RoomFragment extends AbstractChatRoomFragment implements
...
@@ -657,12 +665,16 @@ public class RoomFragment extends AbstractChatRoomFragment implements
}
}
private
void
showRoomListFragment
(
int
actionId
)
{
private
void
showRoomListFragment
(
int
actionId
)
{
Intent
intent
=
new
Intent
(
getActivity
(),
RoomActivity
.
class
).
putExtra
(
"actionId"
,
actionId
)
//TODO: oddly sometimes getActivity() yields null. Investigate the situations this might happen
.
putExtra
(
"roomId"
,
roomId
)
//and fix it, removing this null-check
.
putExtra
(
"roomType"
,
roomType
)
if
(
getActivity
()
!=
null
)
{
.
putExtra
(
"hostname"
,
hostname
)
Intent
intent
=
new
Intent
(
getActivity
(),
RoomActivity
.
class
).
putExtra
(
"actionId"
,
actionId
)
.
putExtra
(
"token"
,
token
)
.
putExtra
(
"roomId"
,
roomId
)
.
putExtra
(
"userId"
,
userId
);
.
putExtra
(
"roomType"
,
roomType
)
startActivity
(
intent
);
.
putExtra
(
"hostname"
,
hostname
)
.
putExtra
(
"token"
,
token
)
.
putExtra
(
"userId"
,
userId
);
startActivity
(
intent
);
}
}
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/fragment/sidebar/SidebarMainFragment.java
View file @
72652690
...
@@ -19,6 +19,7 @@ import com.jakewharton.rxbinding2.support.v7.widget.RxSearchView;
...
@@ -19,6 +19,7 @@ import com.jakewharton.rxbinding2.support.v7.widget.RxSearchView;
import
com.jakewharton.rxbinding2.widget.RxCompoundButton
;
import
com.jakewharton.rxbinding2.widget.RxCompoundButton
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
import
bolts.Task
;
import
bolts.Task
;
...
@@ -58,7 +59,7 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
...
@@ -58,7 +59,7 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
private
RoomListAdapter
adapter
;
private
RoomListAdapter
adapter
;
private
SearchView
searchView
;
private
SearchView
searchView
;
private
TextView
loadMoreResultsText
;
private
TextView
loadMoreResultsText
;
private
List
<
RoomSidebar
>
roomSidebarList
;
private
List
<
RoomSidebar
>
roomSidebarList
=
Collections
.
emptyList
()
;
private
Disposable
spotlightDisposable
;
private
Disposable
spotlightDisposable
;
private
String
hostname
;
private
String
hostname
;
private
static
final
String
HOSTNAME
=
"hostname"
;
private
static
final
String
HOSTNAME
=
"hostname"
;
...
@@ -325,7 +326,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
...
@@ -325,7 +326,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
public
void
onLogoutCleanUp
()
{
public
void
onLogoutCleanUp
()
{
Activity
activity
=
getActivity
();
Activity
activity
=
getActivity
();
if
(
activity
!=
null
&&
activity
instanceof
MainActivity
)
{
if
(
activity
!=
null
&&
activity
instanceof
MainActivity
)
{
((
MainActivity
)
activity
).
hideLogoutMessage
();
((
MainActivity
)
activity
).
onLogout
();
((
MainActivity
)
activity
).
onLogout
();
presenter
.
onLogout
(
task
->
{
presenter
.
onLogout
(
task
->
{
if
(
task
.
isFaulted
())
{
if
(
task
.
isFaulted
())
{
...
@@ -343,7 +343,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
...
@@ -343,7 +343,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
presenter
.
beforeLogoutCleanUp
();
presenter
.
beforeLogoutCleanUp
();
final
Activity
activity
=
getActivity
();
final
Activity
activity
=
getActivity
();
if
(
activity
!=
null
&&
activity
instanceof
MainActivity
)
{
if
(
activity
!=
null
&&
activity
instanceof
MainActivity
)
{
((
MainActivity
)
activity
).
showLogoutMessage
();
// Clear subscriptions on MainPresenter.
// Clear subscriptions on MainPresenter.
((
MainActivity
)
activity
).
beforeLogoutCleanUp
();
((
MainActivity
)
activity
).
beforeLogoutCleanUp
();
}
}
...
...
app/src/main/java/chat/rocket/android/fragment/sidebar/SidebarMainPresenter.java
View file @
72652690
...
@@ -2,6 +2,7 @@ package chat.rocket.android.fragment.sidebar;
...
@@ -2,6 +2,7 @@ package chat.rocket.android.fragment.sidebar;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.v4.util.Pair
;
import
android.support.v4.util.Pair
;
import
android.webkit.CookieManager
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -154,7 +155,8 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View
...
@@ -154,7 +155,8 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View
String
currentHostname
=
rocketChatCache
.
getSelectedServerHostname
();
String
currentHostname
=
rocketChatCache
.
getSelectedServerHostname
();
RealmHelper
realmHelper
=
RealmStore
.
getOrCreate
(
currentHostname
);
RealmHelper
realmHelper
=
RealmStore
.
getOrCreate
(
currentHostname
);
realmHelper
.
executeTransaction
(
realm
->
{
realmHelper
.
executeTransaction
(
realm
->
{
realm
.
deleteAll
();
realm
.
executeTransactionAsync
(
realmObj
->
realmObj
.
deleteAll
());
CookieManager
.
getInstance
().
removeAllCookie
();
ConnectivityManagerApi
connectivityManagerApi
=
ConnectivityManager
.
getInstance
(
RocketChatApplication
.
getInstance
());
ConnectivityManagerApi
connectivityManagerApi
=
ConnectivityManager
.
getInstance
(
RocketChatApplication
.
getInstance
());
connectivityManagerApi
.
removeServer
(
currentHostname
);
connectivityManagerApi
.
removeServer
(
currentHostname
);
rocketChatCache
.
removeHostname
(
currentHostname
);
rocketChatCache
.
removeHostname
(
currentHostname
);
...
...
app/src/main/java/chat/rocket/android/service/RocketChatService.java
View file @
72652690
...
@@ -12,6 +12,7 @@ import java.util.HashMap;
...
@@ -12,6 +12,7 @@ import java.util.HashMap;
import
java.util.concurrent.Semaphore
;
import
java.util.concurrent.Semaphore
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
chat.rocket.android.helper.Logger
;
import
chat.rocket.persistence.realm.RealmStore
;
import
chat.rocket.persistence.realm.RealmStore
;
import
hugo.weaving.DebugLog
;
import
hugo.weaving.DebugLog
;
import
rx.Observable
;
import
rx.Observable
;
...
@@ -113,6 +114,10 @@ public class RocketChatService extends Service implements ConnectivityServiceInt
...
@@ -113,6 +114,10 @@ public class RocketChatService extends Service implements ConnectivityServiceInt
.
doOnSuccess
(
thread
->
{
.
doOnSuccess
(
thread
->
{
webSocketThreads
.
put
(
hostname
,
thread
);
webSocketThreads
.
put
(
hostname
,
thread
);
webSocketThreadLock
.
release
();
webSocketThreadLock
.
release
();
})
.
doOnError
(
throwable
->
{
Logger
.
report
(
throwable
);
webSocketThreadLock
.
release
();
});
});
});
});
}
}
...
...
persistence-realm/src/main/java/chat/rocket/persistence/realm/RealmHelper.java
View file @
72652690
...
@@ -122,7 +122,7 @@ public class RealmHelper {
...
@@ -122,7 +122,7 @@ public class RealmHelper {
return
task
.
getTask
();
return
task
.
getTask
();
}
}
p
rivate
Task
<
Void
>
executeTransactionAsync
(
final
RealmHelper
.
Transaction
transaction
)
{
p
ublic
Task
<
Void
>
executeTransactionAsync
(
final
RealmHelper
.
Transaction
transaction
)
{
final
TaskCompletionSource
<
Void
>
task
=
new
TaskCompletionSource
<>();
final
TaskCompletionSource
<
Void
>
task
=
new
TaskCompletionSource
<>();
final
Realm
realm
=
instance
();
final
Realm
realm
=
instance
();
...
...
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