NekoX/TMessagesProj/src/main/java/org/telegram/messenger/MessageCustomParamsHelper.java

102 lines
3.7 KiB
Java

package org.telegram.messenger;
import org.telegram.tgnet.AbstractSerializedData;
import org.telegram.tgnet.NativeByteBuffer;
import org.telegram.tgnet.TLObject;
import org.telegram.tgnet.TLRPC;
public class MessageCustomParamsHelper {
public static boolean isEmpty(TLRPC.Message message) {
return message.voiceTranscription == null &&
!message.voiceTranscriptionOpen &&
!message.voiceTranscriptionFinal &&
!message.voiceTranscriptionRated &&
message.voiceTranscriptionId == 0 &&
!message.premiumEffectWasPlayed;
}
public static void copyParams(TLRPC.Message fromMessage, TLRPC.Message toMessage) {
toMessage.voiceTranscription = fromMessage.voiceTranscription;
toMessage.voiceTranscriptionOpen = fromMessage.voiceTranscriptionOpen;
toMessage.voiceTranscriptionFinal = fromMessage.voiceTranscriptionFinal;
toMessage.voiceTranscriptionRated = fromMessage.voiceTranscriptionRated;
toMessage.voiceTranscriptionId = fromMessage.voiceTranscriptionId;
toMessage.premiumEffectWasPlayed = fromMessage.premiumEffectWasPlayed;
}
public static void readLocalParams(TLRPC.Message message, NativeByteBuffer byteBuffer) {
if (byteBuffer == null) {
return;
}
int version = byteBuffer.readInt32(true);
TLObject params;
switch (version) {
case 1:
params = new Params_v1(message);
break;
default:
throw new RuntimeException("can't read params version = " + version);
}
params.readParams(byteBuffer, true);
}
public static NativeByteBuffer writeLocalParams(TLRPC.Message message) {
if (isEmpty(message)) {
return null;
}
TLObject params = new Params_v1(message);
try {
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(params.getObjectSize());
params.serializeToStream(nativeByteBuffer);
return nativeByteBuffer;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static class Params_v1 extends TLObject {
private final static int VERSION = 1;
final TLRPC.Message message;
int flags = 0;
private Params_v1(TLRPC.Message message) {
this.message = message;
flags += message.voiceTranscription != null ? 1 : 0;
}
@Override
public void serializeToStream(AbstractSerializedData stream) {
stream.writeInt32(VERSION);
stream.writeInt32(flags);
if ((flags & 1) != 0) {
stream.writeString(message.voiceTranscription);
}
stream.writeBool(message.voiceTranscriptionOpen);
stream.writeBool(message.voiceTranscriptionFinal);
stream.writeBool(message.voiceTranscriptionRated);
stream.writeInt64(message.voiceTranscriptionId);
stream.writeBool(message.premiumEffectWasPlayed);
}
@Override
public void readParams(AbstractSerializedData stream, boolean exception) {
flags = stream.readInt32(true);
if ((flags & 1) != 0) {
message.voiceTranscription = stream.readString(exception);
}
message.voiceTranscriptionOpen = stream.readBool(exception);
message.voiceTranscriptionFinal = stream.readBool(exception);
message.voiceTranscriptionRated = stream.readBool(exception);
message.voiceTranscriptionId = stream.readInt64(exception);
message.premiumEffectWasPlayed = stream.readBool(exception);
}
}
}