From 1e47c768480da790602afaf1748ac5131702f161 Mon Sep 17 00:00:00 2001 From: Tib Teng <661892+tiberiusteng@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:09:57 +0900 Subject: [PATCH] fix notification title partial match --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/assets/whatsnew.htm | 10 ++++++++++ .../java/tw/tib/financisto/db/DatabaseAdapter.java | 4 ++-- .../tib/financisto/service/NotificationListener.java | 6 ++++-- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5e42fe2..5cfe27e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,7 +12,7 @@ Notification Template docs +

2024-01-09

+
+
[-] Fix partial match notification title
+
+ You can use % to indicate wildcard match.
+ Example: If your notification title is like 'Money Out $123', you can match it with + 'Money Out %'; if the title is like '$567 received', you can match it with '% received'. +
+
+

2024-01-08 b

[*] Partial match notification title
diff --git a/app/src/main/java/tw/tib/financisto/db/DatabaseAdapter.java b/app/src/main/java/tw/tib/financisto/db/DatabaseAdapter.java index 7209278..67d5e7e 100644 --- a/app/src/main/java/tw/tib/financisto/db/DatabaseAdapter.java +++ b/app/src/main/java/tw/tib/financisto/db/DatabaseAdapter.java @@ -1030,12 +1030,12 @@ public List getSmsTemplatesForCategory(long categoryId) { public List getSmsTemplatesByNumber(String smsNumber) { try (Cursor c = db().rawQuery( - String.format("select %s from %s where %s LIKE ? order by %s, length(%s) desc", + String.format("select %s from %s where ? LIKE %s order by %s, length(%s) desc", DatabaseUtils.generateSelectClause(DatabaseHelper.SmsTemplateColumns.NORMAL_PROJECTION, null), DatabaseHelper.SMS_TEMPLATES_TABLE, DatabaseHelper.SmsTemplateColumns.title, DatabaseHelper.SmsTemplateColumns.sort_order, - DatabaseHelper.SmsTemplateColumns.template), new String[]{"%" + smsNumber + "%"})) { + DatabaseHelper.SmsTemplateColumns.template), new String[]{smsNumber})) { List res = new ArrayList<>(c.getCount()); while (c.moveToNext()) { SmsTemplate a = SmsTemplate.fromCursor(c); diff --git a/app/src/main/java/tw/tib/financisto/service/NotificationListener.java b/app/src/main/java/tw/tib/financisto/service/NotificationListener.java index f3c641c..f5174cb 100644 --- a/app/src/main/java/tw/tib/financisto/service/NotificationListener.java +++ b/app/src/main/java/tw/tib/financisto/service/NotificationListener.java @@ -13,9 +13,11 @@ import android.text.SpannableString; import android.util.Log; +import java.util.List; import java.util.Set; import tw.tib.financisto.db.DatabaseAdapter; +import tw.tib.financisto.model.SmsTemplate; public class NotificationListener extends NotificationListenerService { private static final String TAG = "NotificationListener"; @@ -83,9 +85,9 @@ private void processNotification(StatusBarNotification sbn, boolean processTempl if (processTemplate && (existing == null || !body.equals(existing.body))) { final DatabaseAdapter db = new DatabaseAdapter(context); - Set smsNumbers = db.findAllSmsTemplateNumbers(); + List templates = db.getSmsTemplatesByNumber(title); - if (smsNumbers.contains(title)) { + if (!templates.isEmpty()) { Intent serviceIntent = new Intent(ACTION_NEW_TRANSACTION_SMS, null, context, FinancistoService.class); serviceIntent.putExtra(SMS_TRANSACTION_NUMBER, title); serviceIntent.putExtra(SMS_TRANSACTION_BODY, body); diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d732a9c..8714644 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -737,7 +737,7 @@ 發送通知的程式 / 簡訊發送門號 輸入數字或文字過濾 - 發送通知的程式名稱或發送簡訊的門號 + 發送通知的程式名稱或發送簡訊的門號, 可用 % 代表任意字串 通知 / 簡訊模板 模板 (?) 佔位標籤: \n{{p}} - 金額\n{{a}} - 帳號/卡號片段\n{{t}} - 交易內容敘述 (盡可能短)\n{{u}} - 交易內容敘述 (盡可能長)\n{{*}} - 任意內容 (不處理) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f3b944..d5d8e28 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -950,7 +950,7 @@ Notification Sender / SMS Number Filter by number or text - Notification sender app name or SMS sender number + Notification sender app name or SMS sender number, use % to indicate wildcard match Notification / SMS Template Template (?) Placeholders: \n{{p}} - price\n{{a}} - account last digits\n{{t}} - note text (non-greedy)\n{{u}} - note text (greedy)\n{{*}} - any symbols/words