mirror of https://github.com/NekoX-Dev/NekoX.git
102 lines
3.7 KiB
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);
|
|
}
|
|
|
|
}
|
|
}
|