mirror of
https://github.com/wrwrabbit/Partisan-Telegram-Android.git
synced 2026-06-01 06:10:06 +00:00
136 lines
5.3 KiB
Java
136 lines
5.3 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.voiceTranscriptionForce &&
|
|
message.voiceTranscriptionId == 0 &&
|
|
!message.premiumEffectWasPlayed &&
|
|
message.originalLanguage == null &&
|
|
message.translatedToLanguage == null &&
|
|
message.translatedText == null;
|
|
}
|
|
|
|
public static void copyParams(TLRPC.Message fromMessage, TLRPC.Message toMessage) {
|
|
toMessage.voiceTranscription = fromMessage.voiceTranscription;
|
|
toMessage.voiceTranscriptionOpen = fromMessage.voiceTranscriptionOpen;
|
|
toMessage.voiceTranscriptionFinal = fromMessage.voiceTranscriptionFinal;
|
|
toMessage.voiceTranscriptionForce = fromMessage.voiceTranscriptionForce;
|
|
toMessage.voiceTranscriptionRated = fromMessage.voiceTranscriptionRated;
|
|
toMessage.voiceTranscriptionId = fromMessage.voiceTranscriptionId;
|
|
toMessage.premiumEffectWasPlayed = fromMessage.premiumEffectWasPlayed;
|
|
toMessage.originalLanguage = fromMessage.originalLanguage;
|
|
toMessage.translatedToLanguage = fromMessage.translatedToLanguage;
|
|
toMessage.translatedText = fromMessage.translatedText;
|
|
}
|
|
|
|
|
|
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;
|
|
flags |= message.voiceTranscriptionForce ? 2 : 0;
|
|
|
|
flags |= message.originalLanguage != null ? 4 : 0;
|
|
flags |= message.translatedToLanguage != null ? 8 : 0;
|
|
flags |= message.translatedText != null ? 16 : 0;
|
|
}
|
|
|
|
@Override
|
|
public void serializeToStream(AbstractSerializedData stream) {
|
|
stream.writeInt32(VERSION);
|
|
flags = message.voiceTranscriptionForce ? (flags | 2) : (flags &~ 2);
|
|
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);
|
|
|
|
if ((flags & 4) != 0) {
|
|
stream.writeString(message.originalLanguage);
|
|
}
|
|
if ((flags & 8) != 0) {
|
|
stream.writeString(message.translatedToLanguage);
|
|
}
|
|
if ((flags & 16) != 0) {
|
|
message.translatedText.serializeToStream(stream);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void readParams(AbstractSerializedData stream, boolean exception) {
|
|
flags = stream.readInt32(true);
|
|
if ((flags & 1) != 0) {
|
|
message.voiceTranscription = stream.readString(exception);
|
|
}
|
|
message.voiceTranscriptionForce = (flags & 2) != 0;
|
|
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);
|
|
|
|
if ((flags & 4) != 0) {
|
|
message.originalLanguage = stream.readString(exception);
|
|
}
|
|
if ((flags & 8) != 0) {
|
|
message.translatedToLanguage = stream.readString(exception);
|
|
}
|
|
if ((flags & 16) != 0) {
|
|
message.translatedText = TLRPC.TL_textWithEntities.TLdeserialize(stream, stream.readInt32(exception), exception);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|