Migrate legacy color palette.
We don't store non-user-selected colors in the database. That means that when we update the palette, we still have to hash based off of the legacy palette when generating a color if we want to migrate to a similar-looking color. Unfortunately, because the new palette is smaller, some colors are "overloaded", meaning that when we hash based off of the legacy palette, some colors will be more/less common than others. To fix this, we simply persist all current colors in the database, then switch our hashing list to what we really want.pull/1/head
							parent
							
								
									5eec3c9541
								
							
						
					
					
						commit
						547b7a3c6f
					
				| @ -0,0 +1,40 @@ | ||||
| package org.thoughtcrime.securesms.contacts.avatars; | ||||
| 
 | ||||
| import android.support.annotation.NonNull; | ||||
| 
 | ||||
| import org.thoughtcrime.securesms.color.MaterialColor; | ||||
| import org.thoughtcrime.securesms.color.MaterialColors; | ||||
| 
 | ||||
| /** | ||||
|  * Used for migrating legacy colors to modern colors. For normal color generation, use | ||||
|  * {@link ContactColors}. | ||||
|  */ | ||||
| public class ContactColorsLegacy { | ||||
| 
 | ||||
|   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) { | ||||
|     String serialized = LEGACY_PALETTE[Math.abs(name.hashCode()) % LEGACY_PALETTE.length]; | ||||
|     try { | ||||
|       return MaterialColor.fromSerialized(serialized); | ||||
|     } catch (MaterialColor.UnknownColorException e) { | ||||
|       return ContactColors.generateFor(name); | ||||
|     } | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue