Search in sources :

Example 6 with AvatarUploadState

use of im.actor.core.viewmodel.AvatarUploadState in project actor-platform by actorapp.

the class OwnAvatarChangeActor method removeAvatar.

public void removeAvatar() {
    if (currentChangeTask != 0) {
        context().getFilesModule().cancelUpload(currentChangeTask);
        currentChangeTask = 0;
    }
    currentChangeTask = RandomUtils.nextRid();
    context().getProfileModule().getOwnAvatarVM().getUploadState().change(new AvatarUploadState(null, true));
    final long currentRid = currentChangeTask;
    request(new RequestRemoveAvatar(), new RpcCallback<ResponseSeq>() {

        @Override
        public void onResult(ResponseSeq response) {
            updates().onUpdateReceived(new SeqUpdate(response.getSeq(), response.getState(), UpdateUserAvatarChanged.HEADER, new UpdateUserAvatarChanged(myUid(), null).toByteArray()));
            // After update applied turn of uploading state
            updates().onUpdateReceived(new ExecuteAfter(response.getSeq(), () -> self().send(new AvatarChanged(currentRid))));
        }

        @Override
        public void onError(RpcException e) {
            if (currentRid != currentChangeTask) {
                return;
            }
            currentChangeTask = 0;
            context().getProfileModule().getOwnAvatarVM().getUploadState().change(new AvatarUploadState(null, false));
        }
    });
}
Also used : SeqUpdate(im.actor.core.api.base.SeqUpdate) ResponseSeq(im.actor.core.api.rpc.ResponseSeq) UpdateUserAvatarChanged(im.actor.core.api.updates.UpdateUserAvatarChanged) RpcException(im.actor.core.network.RpcException) ExecuteAfter(im.actor.core.modules.sequence.internal.ExecuteAfter) UpdateUserAvatarChanged(im.actor.core.api.updates.UpdateUserAvatarChanged) AvatarUploadState(im.actor.core.viewmodel.AvatarUploadState) RequestRemoveAvatar(im.actor.core.api.rpc.RequestRemoveAvatar)

Example 7 with AvatarUploadState

use of im.actor.core.viewmodel.AvatarUploadState in project actor-platform by actorapp.

the class GroupAvatarChangeActor method uploadCompleted.

public void uploadCompleted(final long rid, FileReference fileReference) {
    if (!tasksMap.containsKey(rid)) {
        return;
    }
    final int gid = tasksMap.get(rid);
    long accessHash = getGroup(gid).getAccessHash();
    if (currentTasks.get(gid) != rid) {
        return;
    }
    api(new RequestEditGroupAvatar(new ApiGroupOutPeer(gid, accessHash), rid, new ApiFileLocation(fileReference.getFileId(), fileReference.getAccessHash()), ApiSupportConfiguration.OPTIMIZATIONS)).flatMap(responseEditGroupAvatar -> updates().applyUpdate(responseEditGroupAvatar.getSeq(), responseEditGroupAvatar.getState(), new UpdateGroupAvatarChanged(gid, responseEditGroupAvatar.getAvatar()))).then(v -> avatarChanged(gid, rid)).failure(e -> {
        if (!tasksMap.containsKey(rid)) {
            return;
        }
        final int gid2 = tasksMap.get(rid);
        if (currentTasks.get(gid2) != rid) {
            return;
        }
        currentTasks.remove(gid2);
        tasksMap.remove(rid);
        context().getGroupsModule().getAvatarVM(gid2).getUploadState().change(new AvatarUploadState(null, false));
    });
}
Also used : ApiSupportConfiguration(im.actor.core.modules.api.ApiSupportConfiguration) ResponseEditGroupAvatar(im.actor.core.api.rpc.ResponseEditGroupAvatar) ModuleContext(im.actor.core.modules.ModuleContext) ResponseSeqDate(im.actor.core.api.rpc.ResponseSeqDate) ExecuteAfter(im.actor.core.modules.sequence.internal.ExecuteAfter) Void(im.actor.runtime.actors.messages.Void) RequestEditGroupAvatar(im.actor.core.api.rpc.RequestEditGroupAvatar) UpdateGroupAvatarChanged(im.actor.core.api.updates.UpdateGroupAvatarChanged) RandomUtils(im.actor.core.util.RandomUtils) HashMap(java.util.HashMap) Group(im.actor.core.entity.Group) RpcException(im.actor.core.network.RpcException) RequestRemoveGroupAvatar(im.actor.core.api.rpc.RequestRemoveGroupAvatar) ModuleActor(im.actor.core.modules.ModuleActor) Consumer(im.actor.runtime.function.Consumer) FileReference(im.actor.core.entity.FileReference) ApiFileLocation(im.actor.core.api.ApiFileLocation) UpdateGroupAvatarChangedObsolete(im.actor.core.api.updates.UpdateGroupAvatarChangedObsolete) RpcCallback(im.actor.core.network.RpcCallback) ApiGroupOutPeer(im.actor.core.api.ApiGroupOutPeer) UploadManager(im.actor.core.modules.file.UploadManager) AvatarUploadState(im.actor.core.viewmodel.AvatarUploadState) SeqUpdate(im.actor.core.api.base.SeqUpdate) RequestEditGroupAvatar(im.actor.core.api.rpc.RequestEditGroupAvatar) ApiFileLocation(im.actor.core.api.ApiFileLocation) UpdateGroupAvatarChanged(im.actor.core.api.updates.UpdateGroupAvatarChanged) AvatarUploadState(im.actor.core.viewmodel.AvatarUploadState) ApiGroupOutPeer(im.actor.core.api.ApiGroupOutPeer)

Example 8 with AvatarUploadState

use of im.actor.core.viewmodel.AvatarUploadState in project actor-platform by actorapp.

the class OwnAvatarChangeActor method avatarChanged.

public void avatarChanged(long rid) {
    if (rid != currentChangeTask) {
        return;
    }
    currentChangeTask = 0;
    context().getProfileModule().getOwnAvatarVM().getUploadState().change(new AvatarUploadState(null, false));
}
Also used : AvatarUploadState(im.actor.core.viewmodel.AvatarUploadState)

Example 9 with AvatarUploadState

use of im.actor.core.viewmodel.AvatarUploadState in project actor-platform by actorapp.

the class OwnAvatarChangeActor method changeAvatar.

public void changeAvatar(String descriptor) {
    if (currentChangeTask != 0) {
        context().getFilesModule().cancelUpload(currentChangeTask);
        currentChangeTask = 0;
    }
    currentChangeTask = RandomUtils.nextRid();
    context().getProfileModule().getOwnAvatarVM().getUploadState().change(new AvatarUploadState(descriptor, true));
    context().getFilesModule().requestUpload(currentChangeTask, descriptor, "avatar.jpg", self());
}
Also used : AvatarUploadState(im.actor.core.viewmodel.AvatarUploadState)

Aggregations

AvatarUploadState (im.actor.core.viewmodel.AvatarUploadState)9 SeqUpdate (im.actor.core.api.base.SeqUpdate)3 ExecuteAfter (im.actor.core.modules.sequence.internal.ExecuteAfter)3 RpcException (im.actor.core.network.RpcException)3 ApiFileLocation (im.actor.core.api.ApiFileLocation)2 ApiGroupOutPeer (im.actor.core.api.ApiGroupOutPeer)2 RequestEditGroupAvatar (im.actor.core.api.rpc.RequestEditGroupAvatar)2 RequestRemoveGroupAvatar (im.actor.core.api.rpc.RequestRemoveGroupAvatar)2 ResponseEditGroupAvatar (im.actor.core.api.rpc.ResponseEditGroupAvatar)2 ResponseSeqDate (im.actor.core.api.rpc.ResponseSeqDate)2 UpdateGroupAvatarChanged (im.actor.core.api.updates.UpdateGroupAvatarChanged)2 UpdateGroupAvatarChangedObsolete (im.actor.core.api.updates.UpdateGroupAvatarChangedObsolete)2 FileReference (im.actor.core.entity.FileReference)2 Group (im.actor.core.entity.Group)2 ModuleActor (im.actor.core.modules.ModuleActor)2 ModuleContext (im.actor.core.modules.ModuleContext)2 ApiSupportConfiguration (im.actor.core.modules.api.ApiSupportConfiguration)2 UploadManager (im.actor.core.modules.file.UploadManager)2 RpcCallback (im.actor.core.network.RpcCallback)2 RandomUtils (im.actor.core.util.RandomUtils)2