mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 18:00:02 +01:00
Refactor how message send types are selected.
This commit is contained in:
@@ -16,35 +16,13 @@
|
||||
*/
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public abstract class CharacterCalculator {
|
||||
public abstract class CharacterCalculator implements Parcelable {
|
||||
|
||||
public abstract CharacterState calculateCharacters(String messageBody);
|
||||
|
||||
public static CharacterCalculator readFromParcel(@NonNull Parcel in) {
|
||||
switch (in.readInt()) {
|
||||
case 1: return new SmsCharacterCalculator();
|
||||
case 2: return new MmsCharacterCalculator();
|
||||
case 3: return new PushCharacterCalculator();
|
||||
default: throw new IllegalArgumentException("Read an unsupported value for a calculator.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void writeToParcel(@NonNull Parcel dest, @NonNull CharacterCalculator calculator) {
|
||||
if (calculator instanceof SmsCharacterCalculator) {
|
||||
dest.writeInt(1);
|
||||
} else if (calculator instanceof MmsCharacterCalculator) {
|
||||
dest.writeInt(2);
|
||||
} else if (calculator instanceof PushCharacterCalculator) {
|
||||
dest.writeInt(3);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Tried to write an unsupported calculator to a parcel.");
|
||||
}
|
||||
}
|
||||
|
||||
public static class CharacterState {
|
||||
public final int charactersRemaining;
|
||||
public final int messagesSpent;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.os.Parcel;
|
||||
|
||||
public class MmsCharacterCalculator extends CharacterCalculator {
|
||||
|
||||
private static final int MAX_SIZE = 5000;
|
||||
@@ -8,4 +10,25 @@ public class MmsCharacterCalculator extends CharacterCalculator {
|
||||
public CharacterState calculateCharacters(String messageBody) {
|
||||
return new CharacterState(1, MAX_SIZE - messageBody.length(), MAX_SIZE, MAX_SIZE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
}
|
||||
|
||||
public static final Creator<MmsCharacterCalculator> CREATOR = new Creator<MmsCharacterCalculator>() {
|
||||
@Override
|
||||
public MmsCharacterCalculator createFromParcel(Parcel in) {
|
||||
return new MmsCharacterCalculator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MmsCharacterCalculator[] newArray(int size) {
|
||||
return new MmsCharacterCalculator[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.os.Parcel;
|
||||
|
||||
public class PushCharacterCalculator extends CharacterCalculator {
|
||||
private static final int MAX_TOTAL_SIZE = 64 * 1024;
|
||||
private static final int MAX_PRIMARY_SIZE = 2000;
|
||||
@@ -23,5 +25,26 @@ public class PushCharacterCalculator extends CharacterCalculator {
|
||||
public CharacterState calculateCharacters(String messageBody) {
|
||||
return new CharacterState(1, MAX_TOTAL_SIZE - messageBody.length(), MAX_TOTAL_SIZE, MAX_PRIMARY_SIZE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
}
|
||||
|
||||
public static final Creator<PushCharacterCalculator> CREATOR = new Creator<PushCharacterCalculator>() {
|
||||
@Override
|
||||
public PushCharacterCalculator createFromParcel(Parcel in) {
|
||||
return new PushCharacterCalculator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PushCharacterCalculator[] newArray(int size) {
|
||||
return new PushCharacterCalculator[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.telephony.SmsMessage;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
@@ -62,4 +63,25 @@ public class SmsCharacterCalculator extends CharacterCalculator {
|
||||
|
||||
return new CharacterState(messagesSpent, charactersRemaining, maxMessageSize, maxMessageSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
}
|
||||
|
||||
public static final Creator<SmsCharacterCalculator> CREATOR = new Creator<SmsCharacterCalculator>() {
|
||||
@Override
|
||||
public SmsCharacterCalculator createFromParcel(Parcel in) {
|
||||
return new SmsCharacterCalculator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SmsCharacterCalculator[] newArray(int size) {
|
||||
return new SmsCharacterCalculator[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user