tdlight-java/src/main/java/it/tdlight/client/AuthorizationStateReadyGetM...

52 lines
1.8 KiB
Java
Raw Normal View History

2021-09-27 19:27:13 +02:00
package it.tdlight.client;
import it.tdlight.common.TelegramClient;
2022-07-12 17:53:52 +02:00
import it.tdlight.jni.TdApi;
2021-09-27 19:27:13 +02:00
import it.tdlight.jni.TdApi.AuthorizationStateReady;
import it.tdlight.jni.TdApi.GetMe;
import it.tdlight.jni.TdApi.UpdateAuthorizationState;
import it.tdlight.jni.TdApi.User;
2021-10-22 13:33:03 +02:00
import it.tdlight.jni.TdApi.Error;
2022-07-12 17:53:52 +02:00
import it.tdlight.jni.TdApi.UserTypeRegular;
2021-09-27 19:27:13 +02:00
import java.util.concurrent.atomic.AtomicReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final class AuthorizationStateReadyGetMe implements GenericUpdateHandler<UpdateAuthorizationState> {
private static final Logger logger = LoggerFactory.getLogger(AuthorizationStateReadyGetMe.class);
private final TelegramClient client;
2022-07-12 17:53:52 +02:00
private final AtomicReference<User> me = new AtomicReference<>();
private final AuthorizationStateReadyLoadChats mainChatsLoader;
private final AuthorizationStateReadyLoadChats archivedChatsLoader;
2021-09-27 19:27:13 +02:00
2022-07-12 17:53:52 +02:00
public AuthorizationStateReadyGetMe(TelegramClient client,
AuthorizationStateReadyLoadChats mainChatsLoader,
AuthorizationStateReadyLoadChats archivedChatsLoader) {
2021-09-27 19:27:13 +02:00
this.client = client;
2022-07-12 17:53:52 +02:00
this.mainChatsLoader = mainChatsLoader;
this.archivedChatsLoader = archivedChatsLoader;
2021-09-27 19:27:13 +02:00
}
@Override
public void onUpdate(UpdateAuthorizationState update) {
if (update.authorizationState.getConstructor() == AuthorizationStateReady.CONSTRUCTOR) {
2021-09-27 20:22:57 +02:00
client.send(new GetMe(), me -> {
if (me.getConstructor() == Error.CONSTRUCTOR) {
throw new TelegramError((Error) me);
}
this.me.set((User) me);
2022-07-12 17:53:52 +02:00
if (((User) me).type.getConstructor() == UserTypeRegular.CONSTRUCTOR) {
mainChatsLoader.onUpdate(update);
archivedChatsLoader.onUpdate(update);
}
2021-09-27 20:22:57 +02:00
}, error -> logger.warn("Failed to execute TdApi.GetMe()"));
2021-09-27 19:27:13 +02:00
}
}
2022-07-12 17:53:52 +02:00
public User getMe() {
return me.get();
}
2021-09-27 19:27:13 +02:00
}