Properly map hashed legacy colors to the new color palette.

Fixes #8021
This commit is contained in:
Greyson Parrelli 2018-07-24 09:43:36 -04:00
parent 6a1fd8b1c6
commit 39b27a9d7a

View File

@ -9,8 +9,31 @@ public class ContactColors {
public static final MaterialColor UNKNOWN_COLOR = MaterialColor.GREY;
private static final String[] LEGACY_PALETTE = new String[] {
"red",
"pink",
"purple",
"deep_purple",
"indigo",
"blue",
"light_blue",
"cyan",
"teal",
"green",
"light_green",
"orange",
"deep_orange",
"amber",
"blue_grey"
};
public static MaterialColor generateFor(@NonNull String name) {
return MaterialColors.CONVERSATION_PALETTE.get(Math.abs(name.hashCode()) % MaterialColors.CONVERSATION_PALETTE.size());
String serialized = LEGACY_PALETTE[Math.abs(name.hashCode()) % LEGACY_PALETTE.length];
try {
return MaterialColor.fromSerialized(serialized);
} catch (MaterialColor.UnknownColorException e) {
return MaterialColors.CONVERSATION_PALETTE.get(Math.abs(name.hashCode()) % MaterialColors.CONVERSATION_PALETTE.size());
}
}
}