From ccf3d1f3d612e71794fd2047ccf89b2f0856245c Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Tue, 31 Dec 2019 18:23:45 +0100 Subject: [PATCH 1/9] Fix converting loyalty card to barcodeless The LoyaltyCardEditActivity assumes on many places that an empty string means it doesn't know a value yet. This patch ensures that the BarcodeSelectorActivity returns a special string so that the LoyaltyCardEditActivity can distinguish explicitly picking no barcode from a not yet populated field. --- .../card_locker/BarcodeSelectorActivity.java | 2 +- .../card_locker/LoyaltyCardEditActivity.java | 79 +++++++++++-------- 2 files changed, 48 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java index 18becdcc6..60ca02386 100644 --- a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java +++ b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java @@ -145,7 +145,7 @@ public class BarcodeSelectorActivity extends AppCompatActivity public void onClick(View view) { Log.d(TAG, "Selected no barcode"); Intent result = new Intent(); - result.putExtra(BARCODE_FORMAT, ""); + result.putExtra(BARCODE_FORMAT, LoyaltyCardEditActivity.NO_BARCODE); result.putExtra(BARCODE_CONTENTS, cardId); BarcodeSelectorActivity.this.setResult(RESULT_OK, result); finish(); diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index f5397409c..1ac8bb02d 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -35,6 +35,7 @@ import java.io.InvalidObjectException; public class LoyaltyCardEditActivity extends AppCompatActivity { private static final String TAG = "CardLocker"; + protected static final String NO_BARCODE = "_NO_BARCODE_"; private static final int SELECT_BARCODE_REQUEST = 1; @@ -229,42 +230,49 @@ public class LoyaltyCardEditActivity extends AppCompatActivity if(cardIdFieldView.getText().length() > 0 && barcodeTypeField.getText().length() > 0) { - String formatString = barcodeTypeField.getText().toString(); - final BarcodeFormat format = BarcodeFormat.valueOf(formatString); - final String cardIdString = cardIdFieldView.getText().toString(); - - if(barcodeImage.getHeight() == 0) + if(barcodeTypeField.getText().equals(NO_BARCODE)) { - Log.d(TAG, "ImageView size is not known known at start, waiting for load"); - // The size of the ImageView is not yet available as it has not - // yet been drawn. Wait for it to be drawn so the size is available. - barcodeImage.getViewTreeObserver().addOnGlobalLayoutListener( - new ViewTreeObserver.OnGlobalLayoutListener() - { - @Override - public void onGlobalLayout() - { - if (Build.VERSION.SDK_INT < 16) - { - barcodeImage.getViewTreeObserver().removeGlobalOnLayoutListener(this); - } - else - { - barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } - - Log.d(TAG, "ImageView size now known"); - new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute(); - } - }); + barcodeImageLayout.setVisibility(View.GONE); } else { - Log.d(TAG, "ImageView size known known, creating barcode"); - new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute(); - } + String formatString = barcodeTypeField.getText().toString(); + final BarcodeFormat format = BarcodeFormat.valueOf(formatString); + final String cardIdString = cardIdFieldView.getText().toString(); - barcodeImageLayout.setVisibility(View.VISIBLE); + if(barcodeImage.getHeight() == 0) + { + Log.d(TAG, "ImageView size is not known known at start, waiting for load"); + // The size of the ImageView is not yet available as it has not + // yet been drawn. Wait for it to be drawn so the size is available. + barcodeImage.getViewTreeObserver().addOnGlobalLayoutListener( + new ViewTreeObserver.OnGlobalLayoutListener() + { + @Override + public void onGlobalLayout() + { + if (Build.VERSION.SDK_INT < 16) + { + barcodeImage.getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + else + { + barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + + Log.d(TAG, "ImageView size now known"); + new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute(); + } + }); + } + else + { + Log.d(TAG, "ImageView size known known, creating barcode"); + new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute(); + } + + barcodeImageLayout.setVisibility(View.VISIBLE); + } } View.OnClickListener captureCallback = new View.OnClickListener() @@ -366,6 +374,13 @@ public class LoyaltyCardEditActivity extends AppCompatActivity String cardId = cardIdFieldView.getText().toString(); String barcodeType = barcodeTypeField.getText().toString(); + // We do not want to save the no barcode string to the database + // it is simply an empty there for no barcode + if(barcodeType.equals(NO_BARCODE)) + { + barcodeType = ""; + } + if(store.isEmpty()) { Snackbar.make(storeFieldEdit, R.string.noStoreError, Snackbar.LENGTH_LONG).show(); @@ -484,7 +499,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity } if(contents != null && contents.isEmpty() == false && - format != null) + format != null && format.isEmpty() == false) { Log.i(TAG, "Read barcode id: " + contents); Log.i(TAG, "Read format: " + format); From cc99af13e428127f8fe45833cae6f2566817035b Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 1 Jan 2020 19:43:23 +0100 Subject: [PATCH 2/9] Fix tests --- .../card_locker/BarcodeSelectorActivityTest.java | 5 ++++- .../card_locker/LoyaltyCardViewActivityTest.java | 13 +++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java index 0d53e506f..e03cc216f 100644 --- a/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java +++ b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java @@ -63,7 +63,10 @@ public class BarcodeSelectorActivityTest { // Clicking button should create "empty" barcode activity.findViewById(R.id.noBarcode).performClick(); Intent resultIntent = shadowOf(activity).getResultIntent(); - assertEquals("", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT)); + + // The BarcodeSelectorActivity should return the special NO_BARCODE string to differentiate + // from nothing being set yet + assertEquals(LoyaltyCardEditActivity.NO_BARCODE, resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT)); assertEquals("abcdefg", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS)); } diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index e0b6b7441..0a38c4452 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -126,7 +126,16 @@ public class LoyaltyCardViewActivityTest assertEquals(store, card.store); assertEquals(note, card.note); assertEquals(cardId, card.cardId); - assertEquals(barcodeType, card.barcodeType); + + // The special "No barcode" string shouldn't actually be written to the loyalty card + if(barcodeType.equals(LoyaltyCardEditActivity.NO_BARCODE)) + { + assertEquals("", card.barcodeType); + } + else + { + assertEquals(barcodeType, card.barcodeType); + } assertNotNull(card.headerColor); assertNotNull(card.headerTextColor); } @@ -539,7 +548,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); // Save and check the loyalty card - saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, "", false); + saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, LoyaltyCardEditActivity.NO_BARCODE, false); } @Test From ce81d3afd41c461a1065506f5de12dbd37cd14d1 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 2 Jan 2020 21:15:06 +0100 Subject: [PATCH 3/9] Fix as reviewed and add test --- .../card_locker/BarcodeSelectorActivity.java | 2 +- .../card_locker/LoyaltyCardEditActivity.java | 7 +- .../BarcodeSelectorActivityTest.java | 5 +- .../LoyaltyCardViewActivityTest.java | 66 +++++++++++++++++-- 4 files changed, 69 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java index 60ca02386..18becdcc6 100644 --- a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java +++ b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java @@ -145,7 +145,7 @@ public class BarcodeSelectorActivity extends AppCompatActivity public void onClick(View view) { Log.d(TAG, "Selected no barcode"); Intent result = new Intent(); - result.putExtra(BARCODE_FORMAT, LoyaltyCardEditActivity.NO_BARCODE); + result.putExtra(BARCODE_FORMAT, ""); result.putExtra(BARCODE_CONTENTS, cardId); BarcodeSelectorActivity.this.setResult(RESULT_OK, result); finish(); diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index 1ac8bb02d..3a45918c4 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -37,7 +37,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity private static final String TAG = "CardLocker"; protected static final String NO_BARCODE = "_NO_BARCODE_"; - private static final int SELECT_BARCODE_REQUEST = 1; + protected static final int SELECT_BARCODE_REQUEST = 1; EditText storeFieldEdit; EditText noteFieldEdit; @@ -499,7 +499,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity } if(contents != null && contents.isEmpty() == false && - format != null && format.isEmpty() == false) + format != null) { Log.i(TAG, "Read barcode id: " + contents); Log.i(TAG, "Read format: " + format); @@ -508,7 +508,8 @@ public class LoyaltyCardEditActivity extends AppCompatActivity cardIdView.setText(contents); final TextView barcodeTypeField = findViewById(R.id.barcodeType); - barcodeTypeField.setText(format); + // Set special NO_BARCODE value to prevent onResume from overwriting it + barcodeTypeField.setText(format.isEmpty() ? LoyaltyCardEditActivity.NO_BARCODE : format); onResume(); } } diff --git a/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java index e03cc216f..993355c56 100644 --- a/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java +++ b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java @@ -64,9 +64,8 @@ public class BarcodeSelectorActivityTest { activity.findViewById(R.id.noBarcode).performClick(); Intent resultIntent = shadowOf(activity).getResultIntent(); - // The BarcodeSelectorActivity should return the special NO_BARCODE string to differentiate - // from nothing being set yet - assertEquals(LoyaltyCardEditActivity.NO_BARCODE, resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT)); + // The BarcodeSelectorActivity should return an empty string + assertEquals("", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT)); assertEquals("abcdefg", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS)); } diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 0a38c4452..e139de488 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -164,10 +164,10 @@ public class LoyaltyCardViewActivityTest assertNotNull(bundle); Intent resultIntent = new Intent(intent); - Bundle resultBuddle = new Bundle(); - resultBuddle.putString(Intents.Scan.RESULT, BARCODE_DATA); - resultBuddle.putString(Intents.Scan.RESULT_FORMAT, BARCODE_TYPE); - resultIntent.putExtras(resultBuddle); + Bundle resultBundle = new Bundle(); + resultBundle.putString(Intents.Scan.RESULT, BARCODE_DATA); + resultBundle.putString(Intents.Scan.RESULT_FORMAT, BARCODE_TYPE); + resultIntent.putExtras(resultBundle); // Respond to image capture, success shadowOf(activity).receiveResult( @@ -176,6 +176,38 @@ public class LoyaltyCardViewActivityTest resultIntent); } + /** + * Initiate and complete a barcode selection, either in success + * or in failure + */ + private void selectBarcodeWithResult(final Activity activity, final int buttonId, final String barcodeData, final String barcodeType, final boolean success) throws IOException + { + // Start image capture + final Button captureButton = activity.findViewById(buttonId); + captureButton.performClick(); + + ShadowActivity.IntentForResult intentForResult = shadowOf(activity).peekNextStartedActivityForResult(); + assertNotNull(intentForResult); + + Intent intent = intentForResult.intent; + assertNotNull(intent); + + Bundle bundle = intent.getExtras(); + assertNotNull(bundle); + + Intent resultIntent = new Intent(intent); + Bundle resultBundle = new Bundle(); + resultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, barcodeType); + resultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, barcodeData); + resultIntent.putExtras(resultBundle); + + // Respond to barcode selection, success + shadowOf(activity).receiveResult( + intent, + success ? Activity.RESULT_OK : Activity.RESULT_CANCELED, + resultIntent); + } + private void checkFieldProperties(final Activity activity, final int id, final int visibility, final String contents) { @@ -551,6 +583,32 @@ public class LoyaltyCardViewActivityTest saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, LoyaltyCardEditActivity.NO_BARCODE, false); } + @Test + public void removeBarcodeFromLoyaltyCard() throws IOException + { + ActivityController activityController = createActivityWithLoyaltyCard(true); + Activity activity = (Activity)activityController.get(); + DBHelper db = new DBHelper(activity); + + db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE); + + activityController.start(); + activityController.visible(); + activityController.resume(); + + // First check if the card is as expected + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE); + + // Complete empty barcode selection successfully + selectBarcodeWithResult(activity, R.id.enterButton, BARCODE_DATA, "", true); + + // Check if the barcode type is NO_BARCODE as expected + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, LoyaltyCardEditActivity.NO_BARCODE); + + // Check if the special NO_BARCODE string doesn't get saved + saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, LoyaltyCardEditActivity.NO_BARCODE, false); + } + @Test public void startCheckFontSizes() { From 0c23f25aca4557a818c9a28e433e68c263ca62d9 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sun, 5 Jan 2020 19:35:51 -0800 Subject: [PATCH 4/9] Update translations These were pulled from the Transifex project: transifex.com/na-243/loyalty-card-locker --- app/src/main/res/values-cs/strings.xml | 4 -- app/src/main/res/values-de/strings.xml | 7 +- app/src/main/res/values-el-rGR/strings.xml | 5 -- app/src/main/res/values-es/strings.xml | 5 -- app/src/main/res/values-fr/strings.xml | 5 -- app/src/main/res/values-he-rIL/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 46 ++++++++++--- app/src/main/res/values-lt/strings.xml | 4 -- app/src/main/res/values-nl/strings.xml | 79 ++++++++++++---------- app/src/main/res/values-pl/strings.xml | 19 ++++-- app/src/main/res/values-ru/strings.xml | 13 +++- app/src/main/res/values-sk/strings.xml | 5 -- app/src/main/res/values-sl/strings.xml | 5 -- 13 files changed, 113 insertions(+), 85 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ce263baae..9fca056bb 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -5,12 +5,10 @@ Přidat ZAtím némáte žádné věrnostní karty. Klikněte na tlačítko "+" (plus) nahoře a začněte.\n\nLoyalty Card Locker umožňuje nosit své věrnostní karty v telefonu, takže jsou vždy na dosah. - Obchod Poznámka ID karty Typ čárového kódu - Zrušit Uložit Naskenovat kartu @@ -67,8 +65,6 @@ Revizní informace: %s %s používá tyto knihovny třetích stran: %s Vyberte čárový kód - Zadejte hodnotu čárového kódu a potm vyberte kód, který představuje čárový kód, který je na kartě. - ID karty zkopírováno do schránky diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7000a8620..9849360a0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -2,15 +2,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> Loyalty Card Keychain + Suche Neu Sie haben noch keine Kundenkarte angelegt. Über den \"+\"-Button oben rechts können welche angelegt werden.\n\nDiese App ermöglicht es, Kundenkarten immer mit zu führen. + Es passen keine Kundenkarten zum Suchfilter. Bitte probiere verschiedene Begriffe aus. Geschäft Notiz Kartennummer Barcodeart - Abbrechen Speichern Karte scannen @@ -40,7 +41,6 @@ Kein Geschäft angegeben Keine Kartennummer angegeben Karte konnte nicht gefunden werden - %1$s: %2$s Import/Export Import @@ -79,8 +79,6 @@ %s verwendet folgenden Dritt-Ressourcen: %s Barcode auswählen - Fügen Sie die Kundennummer ein, anschließend wählen Sie die korrekte Barcodeart aus. - Nummer in die Zwischenablage kopiert Vorschaubild für die Karte @@ -113,4 +111,5 @@ Schriftgröße der Kartennummer Schriftgröße der Notiz Helligkeit bei Barcode Ansicht erhöhen + Barcodeausrichtung sperren diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 1b182d896..267d4ba70 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -5,12 +5,10 @@ Προσθήκη Δεν έχετε κάρτες προς το παρόν. Πατήστε το κουμπί \"+\" (συν) στο πάνω μέρος για να ξεκινήσετε.\n\nΤο Loyalty Card Keychain σας δίνει τη δυνατότητα να έχετε τις κάρτες σας στο τηλέφωνο σας, έτσι ώστε να τις έχετε πάντα μαζί σας. - Κατάστημα Σημείωση Κωδικός Κάρτας Τύπος Barcode - Άκυρο Αποθήκευση Φωτογράφιση Κάρτας @@ -40,7 +38,6 @@ Δεν δώσατε κατάστημα Δεν δώσατε κωδικό κάρτας Δεν ήταν δυνατό να εντοπιστεί κάρτα - %1$s: %2$s Εισαγωγή/Εξαγωγή Εισαγωγή @@ -79,8 +76,6 @@ Το %s χρησιμοποιεί τους παρακάτω πόρους τρίτων: %s Επιλέξτε Barcode - Δώστε την τιμή του barcode και μετά επιλέξτε την εικόνα που αναπαριστά το barcode που θέλετε να χρησιμοποιείσετε - Ο κωδικός της κάρτας αντιγράφτηκε στο πρόχειρο Μικρογραφία κάρτας diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c7108c300..5c42bcb1c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -5,12 +5,10 @@ Añadir Actualmente no tienes ninguna tarjeta guardada. Presiona el botón \"+\" para comenzar.\n\nEsta cartera te permite llevar tus tarjetas de fidelización en tu teléfono para que estén siempre a tu alcance. - Tienda Nota ID de la Tarjeta Tipo de Código de Barras - Cancelar Guardar Escanear Tarjeta @@ -40,7 +38,6 @@ Establecimiento no especificado ID de la Tarjeta no especificado No se ha podido encontrar la tarjeta de fidelización - %1$s: %2$s Importar/Exportar Importar @@ -79,8 +76,6 @@ %s utiliza los siguientes recursos de terceros: %s Selecciona el Código de Barras - Introduce el valor del código de barras y después presiona en una imagen para seleccionar el tipo de código de barras. - ID de la Tarjeta copiado al portapapeles Miniatura para la tarjeta diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index dbb9112be..2f459495b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -5,12 +5,10 @@ Ajouter Aucune carte de fidélité enregistrée. Appuyez sur le bouton \"+\" (plus) pour commencer.\n\nLoyalty Card Locker vous permet d\'enregistrer vos cartes de fidélité sur votre téléphone pour toujours les avoir à portée de main. - Nom Note Numéro Type de code-barres - Annuler Enregistrer Mode capture @@ -40,7 +38,6 @@ Aucun nom n\'a été saisi Aucun numéro n\'a été saisi N\'a pas pu retrouver la carte de fidélité - %1$s: %2$s Importer/Exporter Importer @@ -79,8 +76,6 @@ %s utilise les ressources-tierces suivantes : %s Choisissez le code-barre - Saisissez les chiffres du code-barres et sélectionnez l\'image qui le représente - Numéro de carte copié dans le presse-papier Miniature pour la carte diff --git a/app/src/main/res/values-he-rIL/strings.xml b/app/src/main/res/values-he-rIL/strings.xml index a4aa03a41..d4ab5bac9 100644 --- a/app/src/main/res/values-he-rIL/strings.xml +++ b/app/src/main/res/values-he-rIL/strings.xml @@ -5,7 +5,6 @@ מזהה כרטיס סוג ברקוד - ביטול שמור צלם כרטיס diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7e17852d7..d25bc273e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -2,14 +2,17 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> Carte fedeltà + Cerca Aggiungi - Non hai ancora alcuna tessera fedeltà al momento. Premi sul bottone "+" (più) in alto per incominciare.\n\nL\'app ti permette di portare con te le tue tessere fedeltà, così da averle sempre a disposizione. + Non hai ancora alcuna carta fedeltà. Premi sul bottone +(più) in alto per incominciare.\n\nL\'app ti permette di portare con te le tue carte fedeltà, così da averle sempre a disposizione. + Nessuna carta fedeltà corrisponde al filtro. Riprovare con altri valori Negozio Note Codice Tipo codice a barre + Questa carta non ha un codice a barre Annulla Salva @@ -25,6 +28,7 @@ Conferma che vuoi eliminare questa carta. Ok Copia ID negli appunti + Condividi Invia… Aggiunto al launcher @@ -39,11 +43,14 @@ Nessun negozio inserito Nessun codice carta inserito + Impossibile trovare la carta + Impossibile analizzare l\'URI + %1$s: %2$s Importa/Esporta Importa Esporta - Fare il backup dei dati ti permette di spostare le tue tessere da un dispositivo ad un altro. + Fare il backup dei dati ti permette di spostare le tue carte da un dispositivo ad un altro. Importato da: %1$s Esportato in: %1$s File mancante: %1$s @@ -72,18 +79,20 @@ Pubblicato sotto licenza GPLv3. Informazioni su %s Versione: %s - Informazione sulla revisione: %s + Informazione sulla versione: %s %s usa le seguenti librerie di terze parti: %s %s usa le seguenti risorse di terze parti: %s Seleziona codice a barre - Digita il valore del codice a barre, quindi seleziona l\'immagine che rappresenta il codice a barre che vuoi usare. + Immettere l\'ID della carta, quindi selezionare l\'immagine che rappresenta il codice a barre desiderato oppure selezionare “Questa carta non ha un codice a barre” per non valorizzare il dato. ID della carta copiato negli appunti - Incomincia introduzione - Benvenuto in Carte fedeltà\n - Gestisci le tue tessere direttamente dal telefono!\n\n + Miniatura carta + + Introduzione + Benvenuto in Carte Fedeltà\n + Gestisci le tue carte direttamente dal telefono!\n\n Aggiungi carte\n Aggiungi una nuova carta premendo il + dall\'elenco delle carte.\n\n Aggiungi carte\n @@ -93,6 +102,27 @@ Backup\n I dati delle tessere possono essere salvati. Per esportare o importare tessere premi Importa/Esporta nel menù nella schermata principale.\n\n Feedback\n - Questa app è gratuita, priva di pubblicità e open source. Guarda i dettagli premendo su Informazioni nella schermata principale.\n\nPer favore, lascia un feedback nell\'app store! (: + Questa app è gratuita, priva di pubblicità e open source. Guarda i dettagli premendo su \"Informazioni\" nella schermata principale.\n\nPer favore, lascia un feedback nell\'app store! (: + Cambia + Colore titolo + Colore scheda + Colore di sfondo del titolo carta + Colore del titolo carta + + Impostazioni + Interfaccia utente + Tema + Tema del sistema + Tema chiaro + Tema scuro + Dimensione testo del titolo carta (in lista carte) + Dimensione testo delle note carta (in lista carte) + Dimensione testo del titolo carta + Dimensione testo dell\'ID carta + Dimensione testo delle note carta + Aumenta luminosità dello schermo quando apro un codice a barre + Blocca orientamento del codice a barre + Importa carte fedeltà + Voglio condividere una carta fedeltà con te diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index b0a48c6e5..3b5d639b2 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -5,12 +5,10 @@ Pridėti Šiuo metu neturite nė vienos įvestos lojalumo kortelės. Paspauskite "+" (pliuso) pliuso mygtuką, kad pradėtumėte.\n\nLoyalty Card Locker leidžia Jums visada nešiotis lojalumo kortelių informaciją savo telefone ar planšetėje, taip jos visada pasiekiamos. - Parduotuvė Užrašas Kortelės ID Brūkšninio kodo tipas - Atšaukti Išsaugoti Nufotografuoti kortelę @@ -50,8 +48,6 @@ Revizijos informacija: %s %s naudoja šias trečiosios šalies bibliotekas: %s Pasirinkite brūkšninį kodą - Enter the barcode value then select the image which represents the barcode you want to use - Kortelės ID nukopijuota į iškarpinę diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 11e70255f..b4c3d4930 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -2,44 +2,49 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> Klantenkaartkluis + Zoeken Toevoegen - Er zijn nog geen klantenkaarten aanwezig. Klik op de knop \"+\" (plus) om te beginnen.\n\nKlantenkaartenkluis beheert klantenkaarten op een smartphone of tablet, zodat ze altijd binnen handbereik zijn. + Je hebt nog geen klantenkaarten toegevoegd. Druk op de knop \'+\' (plus) om te beginnen.\n\nMet Klantenkaartkluis beheer je je klantenkaarten op je smartphone of tablet zodat ze altijd binnen handbereik zijn. + Er zijn geen kaarten die overeenkomen met je zoekopdracht. Probeer het opnieuw. Winkel - Opmerking - Kaart-ID - Barcodetype + Aantekening + Kaartnummer + Soort barcode + Deze kaart heeft geen barcode Annuleren Opslaan Scan een kaart - Voer een kaart in + Voer een kaartnummer in Kaart bewerken Bewerken Verwijderen Bevestigen - Draaien blokkeren - Draaien deblokkeren + Draaien niet toestaan + Draaien toestaan Kaart verwijderen Bevestig dat je deze kaart wilt verwijderen. Oké - ID kopiëren naar klembord + Kaartnummer kopiëren naar klembord + Delen Versturen… - Toegevoegd aan beginscherm + Toegevoegd aan startscherm Klantenkaart bewerken Klantenkaart toevoegen - Klantenkaart bekijken - Klantenkaart-barcode scannen + Klantenkaart tonen + Scan de barcode van de kaart Kaartsnelkoppeling - Er zijn geen kaarten; voeg er één toe. + Je hebt nog geen kaarten toegevoegd. - Afbeelding van klantenkaart-barcode + Afbeelding van barcode - Geen winkel ingevoerd - Geen kaart-ID ingevoerd - De klantenkaart kan niet worden opgevraagd. + Geen winkelnaam ingevoerd + Geen kaartnummer ingevoerd + De klantenkaart kan niet worden opgevraagd + Kan de import-uri niet verwerken %1$s: %2$s Importeren/Exporteren @@ -58,7 +63,7 @@ Bezig met importeren…... Bezig met exporteren…... Het importeren of exporteren van kaarten is niet mogelijk zonder de machtiging \'externe opslag\'. - De gegevens zijn weggeschreven naar de hoogste map op de externe opslag. + De gegevens worden weggeschreven naar de hoogste map op de externe opslag. Importeren uit bestandssysteem Kies een specifiek bestand uit het bestandssysteem. Uit bestandssysteem @@ -75,31 +80,31 @@ Over %s Versie: %s Versie-informatie: %s - %s gebruikt de volgende bibliotheken van derde partijen: %s - %s gebruikt de volgende bronnen van derde partijen: %s + %s gebruikt de volgende bibliotheken van externe partijen: %s + %s gebruikt de volgende bronnen van externe partijen: %s - Barcode selecteren - Voer de waarde van de barcode in en kies daarna de afbeelding van de barcode die je wilt gebruiken. + Barcode toevoegen + Voer de barcode in en kies daarna de afbeelding van de barcode die je wilt gebruiken., of druk op “Deze kaart heeft geen barcode” om geen barcode te gebruiken. - Kaart-ID is gekopieerd naar het klembord + Kaartnummer is gekopieerd naar het klembord - Voorbeeldminiatuur voor kaart + Miniatuurvoorbeeld van kaart Rondleiding starten Welkom bij Klantenkaartkluis\n Beheer je op barcodes gebaseerde klantenkaarten op je telefoon!\n\n Kaarten toevoegen\n - Voeg een nieuwe kaart toe door in de kaartenlijst op de plus-knop te drukken.\n\n + Voeg een kaart toe door in de lijst met kaarten op de plus-knop te drukken.\n\n Kaarten toevoegen\n De barcode kan worden toegevoegd door deze handmatig in te voeren of te scannen met de camera.\n\n Kaart tonen\n - Als je een kaart wilt tonen, druk dan op het beginscherm op de naam van de winkel.\n\n + Toon een kaart door op het kaartoverzicht op de naam van de winkel te drukken.\n\n Back-uppen\n - De kaarten kunnen worden geback-upt. Als je kaarten wilt exporteren of importeren, druk dan in het menu op het hoofdscherm op Importeren/Exporteren.\n\n + Je kunt je kaarten back-uppen: druk in het menu op het kaartoverzicht op Importeren/Exporteren.\n\n Feedback\n - Deze app is gratis, advertentievrij en open source. Bekijk de details hiervan door op Over te drukken in het menu op het hoofdscherm.\n\nGeef feedback in de app-winkel! (: + Deze app is gratis, reclamevrij en open source. Bekijk alle details door op \'Over\' te drukken in het menu op het kaartoverzicht.\n\nGeef feedback in de app-winkel! (: - Wijzigen + Aanpassen Tekstkleur van winkelnaam Kopkleur Achtergrondkleur van winkeltekst @@ -107,11 +112,17 @@ Instellingen Uiterlijk en bediening - Kaarttitel lijstlettertypegrootte - Kaartnotitie lijstlettertypegrootte - Kaarttitel-lettertypegrootte - Kaart-ID lettertypegrootte - Kaartnotitie lettertypegrootte - Barcodeweergave lichter maken + Thema + Systeemthema + Licht + Donker + Lettergrootte van kaartnamen op de lijst + Lettergrootte van aantekeningen op de lijst + Lettergrootte van kaartnamen + Lettergrootte van kaartnummer + Lettergrootte van aantekeningen + Scherm helderder maken bij tonen van barcode Barcode-oriëntatie vergrendelen + Klantenkaart importeren + Ik wil een klantenkaart met je delen diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e7407b63b..d13acbb91 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -2,14 +2,17 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> Loyalty Card Keychain + Szukaj Dodaj W tej chwili nie masz żadnych kart lojalnościowych. Kliknij przycisk \"+\" (plus) u góry, aby rozpocząć. \n\nLoyalty Locker Card pozwala nosić karty lojalnościowe w telefonie, dzięki czemu są zawsze w zasięgu ręki. + Żadne karty lojalnościowe nie pasują do filtra wyszukiwania. Spróbuj użyć innych warunków. Sklep Notatka Identyfikator karty Typ kodu kreskowego + Ta karta nie ma kodu kreskowego Anuluj Zapisz @@ -25,6 +28,7 @@ Potwierdź, że chcesz usunąć tę kartę. OK Skopiuj identyfikator do schowka + Udostępnij Wyślij… Dodano do ekranu głównego @@ -40,6 +44,7 @@ Nie wprowadzono nazwy sklepu Nie wprowadzono identyfikatora karty Nie można wyszukać karty lojalnościowej + Nie można przeanalizować identyfikatora importu URI %1$s: %2$s Importuj/Eksportuj @@ -79,20 +84,20 @@ %s wykorzystuje następujące zasoby osób trzecich: %s Wybierz kod kreskowy - Wprowadź wartość kodu kreskowego, a następnie wybierz obraz, który reprezentuje kod kreskowy, który chcesz użyć + Wprowadź identyfikator karty, a następnie wybierz obraz reprezentujący kod kreskowy, którego chcesz użyć, lub wybierz “Ta karta nie ma kodu kreskowego”, aby nie używać kodu kreskowego. Skopiowano identyfikator karty do schowka Miniaturka karty Pokaż ekran powitalny - Witamy w Loyalty Card Keychain\n + Witaj w Loyalty Card Keychain\n Zarządzaj kartami sklepowymi/lojalnościowymi opartymi na kodzie kreskowym na swoim telefonie!\n\n Dodawanie kart\n Dodaj nową kartę, dotykając znaku plus z listy kart. \n\n - Dodawanie kart \n + Dodawanie kart\n Aby dodać kod kreskowy, wykonaj zdjęcie aparatem lub wpisz ręcznie. \n\n - Pokaż kartę \n + Pokaż kartę\n Aby wyświetlić kartę, na głównym ekranie kliknij nazwę sklepu \n\n Kopia zapasowa\n Karty można zarchiwizować. Aby wyeksportować lub zaimportować dane karty, dotknij opcji Importuj/eksportuj w menu na stronie głównej. \n\n @@ -107,6 +112,10 @@ Ustawienia Interfejs użytkownika + Motyw + Systemowy + Jasny + Ciemny Rozmiar czcionki listy tytułów kart Rozmiar czcionki listy kart Rozmiar czcionki tytułu karty @@ -114,4 +123,6 @@ Rozmiar czcionki notatki karty Rozjaśnij widok kodu kreskowego Zablokuj autoobracanie kodów kreskowych + Importuj kartę lojalnościową + Chcę udostępnić Ci kartę lojalnościową diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index c53f54da3..2de672891 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -2,14 +2,17 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> Карты лояльности + Поиск Добавить карту Пока нет ни одной карты. Нажмите на кнопку «+» (плюс) сверху для добавления.\n\n«Карты лояльности» позволяют хранить карты скидок в телефоне, так что они всегда будут под рукой. + Карт не найдено, попробуйте поискать по-другому. Магазин Примечание Номер карты Тип штрих-кода + Эта карта без штрихкода Отменить Сохранить @@ -25,6 +28,7 @@ Пожалуйста подтвердите удаление карты. ОК Скопировать номер карты в буфер обмена + Переслать Отправить… Карта добавлена на главный экран. @@ -40,6 +44,7 @@ Название магазина не указано Номер карты не указан Карта не найдена + Не удалось разобрать импортируемый URI %1$s: %2$s Импорт/Экспорт @@ -79,7 +84,7 @@ %s использует следующие сторонние ресурсы: %s Выбор штрих-кода - Введите значение и выберете вид штрих-кода + Введите ID карты и выберите тип штрих-кода. Номер карты скопирован в буфер обмена @@ -107,6 +112,10 @@ Настройки Внешний вид + Тема + Системная тема + Светлая тема + Тёмная тема Размер шрифта названия карты для списка Размер шрифта примечания для списка Размер шрифта названия карты @@ -114,4 +123,6 @@ Размер шрифта примечания Максимальная яркость при показе карты Портретная ориентация экрана при показе карты + Импортировать карту + Я хочу поделиться картой с вами diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 6935b8232..73cd286f3 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -5,12 +5,10 @@ Pridať Zatiaľ nemáte žiadne vernostné karty. Kliknite na tlačidlo \"+\" (plus) vyššie a začnite.\n\nAplikácia Vernostné karty umožňuje nosiť svoje vernostné karty v telefóne, kde sú vždy na dosah. - Obchod Poznámka ID karty Typ čiarového kódu - Zrušiť Uložiť Zosnímať kartu @@ -40,7 +38,6 @@ Nebol zadaný obchod Nebolo zadané ID karty Nie je možné vyhľadať vernostnú kartu - %1$s: %2$s Import/Export Import @@ -79,8 +76,6 @@ %s používa tieto knižnice tretích strán: %s Vyberte čiarový kód - Zadajte čiarový kód a vyberte obrázok reprezentujúci čiarový kód, ktorý chcete použiť - ID karty skopírované do schránky Náhľad karty diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 96f51ed59..efeb06d23 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -5,12 +5,10 @@ Dodaj Trenutno nimate shranjene nobene kartice zvestobe. Kliknite \"+\" (plus) na vrhu, da jih dodate.\n\n Aplikacija Kartice zvestobe Vam omogoča, da imate kartice zvestobe shranjene na Vašem telefonu in vedno v dosegu roke. - Shrani Zabeležka Št. kartice Vrsta črne kode - Prekliči Shrani Slikaj kartico @@ -40,7 +38,6 @@ Ime trgovine ni bilo vnešeno Številka kartice ni bila vnešena Te kartice zvestobe ni bilo moč najti - %1$s:%2$s Uvozi/izvozi Uvozi @@ -79,8 +76,6 @@ %suporablja sledeče zunanje vire: %s Izberite črtno kodo - Vnesite vrednost črtne kode in izberite črtno kodo, ki jo želite uporabljati - Številka kartice je bila kopirana v odložišče Ikona kartice From c76580d6be73e662e688524b2aa2c6237703c612 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sun, 5 Jan 2020 19:46:17 -0800 Subject: [PATCH 5/9] Update app version to 0.26 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ce36923f0..6e8ce7502 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "protect.card_locker" minSdkVersion 16 targetSdkVersion 29 - versionCode 35 - versionName "0.25.4" + versionCode 36 + versionName "0.26" } buildTypes { release { From ab4c360c37289c2bd99f9aacb4280c48c9378036 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sun, 5 Jan 2020 20:05:45 -0800 Subject: [PATCH 6/9] Update CHANGELOG for v0.26 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 667594ba7..df20f5200 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +## v0.26 (2020-01-05) + +Changes: +- Add ability to search for a card ([#320](https://github.com/brarcher/loyalty-card-locker/pull/320)) +- Add ability to share and receive loyalty cards ([#321](https://github.com/brarcher/loyalty-card-locker/pull/321)) +- Dark mode support ([#322](https://github.com/brarcher/loyalty-card-locker/pull/322)) +- Loyalty cards can now be barcodeless (e.g. not have a barcode) ([#324](https://github.com/brarcher/loyalty-card-locker/pull/324)) +- Notes can span multiple lines ([#326](https://github.com/brarcher/loyalty-card-locker/pull/326)) +- Improvements with the sizing of notes ([#319](https://github.com/brarcher/loyalty-card-locker/pull/319)) +- Improve notification and app icon visibility ([#330](https://github.com/brarcher/loyalty-card-locker/pull/330)) +- Update target SDK to Android 10 +- Improve the following translations: + * German + * Italian + * Dutch + * Polish + * Russian + ## v0.25.4 (2019-10-04) Changes From aad98ba55bae58e5e330616ac33181616f4ec87b Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 9 Jan 2020 20:16:54 +0100 Subject: [PATCH 7/9] Fix NPE when sharing cards without header values --- .../protect/card_locker/ImportURIHelper.java | 26 ++++++++++++++++--- .../protect/card_locker/ImportURITest.java | 25 ++++++++++++++++++ 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java index d3133bcb3..5aeeb0cec 100644 --- a/app/src/main/java/protect/card_locker/ImportURIHelper.java +++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java @@ -35,12 +35,24 @@ public class ImportURIHelper { } try { + // These values are allowed to be null + Integer headerColor = null; + Integer headerTextColor = null; + String store = uri.getQueryParameter(STORE); String note = uri.getQueryParameter(NOTE); String cardId = uri.getQueryParameter(CARD_ID); String barcodeType = uri.getQueryParameter(BARCODE_TYPE); - Integer headerColor = Integer.parseInt(uri.getQueryParameter(HEADER_COLOR)); - Integer headerTextColor = Integer.parseInt(uri.getQueryParameter(HEADER_TEXT_COLOR)); + String unparsedHeaderColor = uri.getQueryParameter(HEADER_COLOR); + if(unparsedHeaderColor != null) + { + headerColor = Integer.parseInt(unparsedHeaderColor); + } + String unparsedHeaderTextColor = uri.getQueryParameter(HEADER_TEXT_COLOR); + if(unparsedHeaderTextColor != null) + { + headerTextColor = Integer.parseInt(unparsedHeaderTextColor); + } return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor); } catch (NullPointerException | NumberFormatException ex) { throw new InvalidObjectException("Not a valid import URI"); @@ -57,8 +69,14 @@ public class ImportURIHelper { uriBuilder.appendQueryParameter(NOTE, loyaltyCard.note); uriBuilder.appendQueryParameter(CARD_ID, loyaltyCard.cardId); uriBuilder.appendQueryParameter(BARCODE_TYPE, loyaltyCard.barcodeType); - uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString()); - uriBuilder.appendQueryParameter(HEADER_TEXT_COLOR, loyaltyCard.headerTextColor.toString()); + if(loyaltyCard.headerColor != null) + { + uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString()); + } + if(loyaltyCard.headerTextColor != null) + { + uriBuilder.appendQueryParameter(HEADER_TEXT_COLOR, loyaltyCard.headerTextColor.toString()); + } return uriBuilder.build(); } diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index 015c43395..d6f6a3438 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -12,6 +12,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.io.InvalidObjectException; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static protect.card_locker.DBHelper.LoyaltyCardDbIds; @@ -53,6 +54,30 @@ public class ImportURITest { assertEquals(card.store, parsedCard.store); } + @Test + public void ensureNoCrashOnMissingHeaderFields() throws InvalidObjectException + { + // Generate card + db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, null, null); + + // Get card + LoyaltyCard card = db.getLoyaltyCard(1); + + // Card to URI + Uri cardUri = importURIHelper.toUri(card); + + // Parse URI + LoyaltyCard parsedCard = importURIHelper.parse(cardUri); + + // Compare everything + assertEquals(card.barcodeType, parsedCard.barcodeType); + assertEquals(card.cardId, parsedCard.cardId); + assertEquals(card.note, parsedCard.note); + assertEquals(card.store, parsedCard.store); + assertNull(parsedCard.headerColor); + assertNull(parsedCard.headerTextColor); + } + @Test public void failToParseInvalidUri() { From bf48e394e986ac4579f7e7e310e70bb326c7e29f Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Thu, 9 Jan 2020 19:34:50 -0800 Subject: [PATCH 8/9] Update app for v0.26.1 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6e8ce7502..650f3a706 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "protect.card_locker" minSdkVersion 16 targetSdkVersion 29 - versionCode 36 - versionName "0.26" + versionCode 37 + versionName "0.26.1" } buildTypes { release { From 1a35150677b42a2207a5de9857c830b43e04ca18 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Thu, 9 Jan 2020 19:35:13 -0800 Subject: [PATCH 9/9] Update CHANGELOG for v0.26.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df20f5200..9f0ec9b4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v0.26.1 (2020-01-09) + +Changes: +- Fix issue with sharing cards without background color ([#343](https://github.com/brarcher/loyalty-card-locker/pull/343)) + ## v0.26 (2020-01-05) Changes: