Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Card image does not change after being set once in HTTP mode #1966

Open
Fang- opened this issue Jan 26, 2025 · 4 comments · May be fixed by #1972
Open

Card image does not change after being set once in HTTP mode #1966

Fang- opened this issue Jan 26, 2025 · 4 comments · May be fixed by #1972
Labels

Comments

@Fang-
Copy link

Fang- commented Jan 26, 2025

My server sends card data to relevant clients whenever someone changes their name or display picture. However, it seems that the picture gets stuck at whatever is the first value sent for a specific friend.

Here is the first response my server sends, which contains both the friend's location and their card:

[
  {
    "name": "~lup",
    "tid": "~lup/testphone",
    "face": "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAAAAAB3tzPbAAAEXElEQVR42u3cXUxbZRzH8d9pw2sBGdBYlKhzQajBxL3ghTPZBtG44ZgyNVkgcTcmGzjnWi/Ui2WgC3BhduEyM43cz2zKxUhWoklxnUhh42UzdkscbkkBE2CR0nqqpTOoT3pAn2RbyNZf9v9ePVckn4S255zn/xzcJA83yROAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAoEoA+AQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAouiNAMvrbrTYXicaTaQeIejdtucVqnt/W8Ib345PBsJlMH8BcLW4ze5G7vtUXTtAC/s5R9eZXUwvEAADZ61rH/mQGAChrGfyDGgCUvvPTAjUAKP/kBjcAGdsHktQA4NHjMQpAobMoPwP/V+5bkwSA7K5LQ33dn777UoXDwLKM7ZfTH5B1uOdMf2giGp/o+2hzIZb17IW0ByAjKyevpLJm7xcjkcg5b7kNS1ofTHuAyubc0j5qjne4DVhbd4EFAMB4cNeZ2C8flMLaxss8AAD5O/3x77faYWnHFBMAKD5wffbQKqQy3o5RAYANp80v1yBV7vEkFwDFnfOBtUi1eoAMgMzm6eFnkGrHDTIAbI2/Dq+1gI6yAWA0TgfWAKrKEBsAtub5E6sAlSfBBkBmp3nIDtXDQ3QAlJye2Qqo9iXoAKi+drYUqkcu8gHgMd8DVG2EgBL/VTdUG6b4AHgt1mGodXY3IaDAd/UJqPYs8AHQaHqhqgoTAlyjgUK1dvgIAWif2wzVh4yAmkgrVC+bhADnyLcOtXaHCQFGV7hCrYuChAA0m3VqaT/JCKiNeqA6wghwTx6DyssIcIa+zlDr3YyAvH5/vlo3xO8aIFKXlbsi5RR/c74s5591ZkPsrgESlwLnVqb+2fmBf/9W4MeEAO6bf6EV/BD/4M9T651xQgD91yj9Dxn9pUSL5WLuFCHAejldPEgIsN7QPMl4Q2O9pXyF8Zayg/ym3jVmeazSSwhoMj1QPTXBByjo/bkcqr2EjxZfj7VTP9xd8ni9mvDxupd8g6P62ncu5i2mkp6ZF5k3+TI7zYN2qMrOs22z2lqWbHR72Ta6jabps8yjBvYm7mGPrJYZ6nGbxYGnp5FqdZBq4Mmo7jFPPI5UuZ9RjZwVe6/PHiy0gvb/TjT0V/BqXzxAO3ZpuHb5YuPvu2DtuSskg682Z03HmDneXmnA2vrhdB89Xhz+drprm7tGI3OB/w5/D6b78HfW4R5ff2gyaob9bZsewLI2jqT9+H1218VBf/cxT12FA8sz6q+k/wEI6I+gOPYzHEHR99jnHIeANGXWB6mPYVUcpT4I99CBUJL3KKJRtm+I+DAo93FcR9WebtYD0YtH0tt6JxKELwV4YVvDbu+RU8GwmZTXMsiLMW4vAQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAoEoA+AQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSwL3uL9KfM1jWSEisAAAAAElFTkSuQmCC",
    "_type": "card"
  },
  {
    "acc": 127,
    "lon": 1.23,
    "alt": 52,
    "tst": 1731875032,
    "topic": "~lup/testphone",
    "tid": "~lup/testphone",
    "batt": 72,
    "lat": 45.6,
    "bs": 1,
    "vel": 0,
    "_type": "location",
    "vac": 2
  }
]

The image from the card correctly shows up in the app for that friend.

Some time later, my server sends the following response, which contains a different name and face for the same friend:

[
  {
    "name": "Mr. Lup",
    "tid": "~lup/testphone",
    "face": "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAAAAAB3tzPbAAAEX0lEQVR42u3c3U9bdRzH8Q8ox0IxAxKBJpvMZMO48bDxIK6TJhpYwi7QLXKP0cVlXixeAFFh2YV6YZlzwpZ4MxPIEnXomGxGA9sS54XswURiQTKnBgVTYAiUx7TnfF2hpz0FiiMhy+/rvq8/oMk76WnP73d+3wMhhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKsIvHRe5VsT0yAchLdVy7do65vL7R94n5jf5FDgzqSO2ltDP+op72h3BGP/6JowALD1/Pxi+lxWJXKAUEzNxpyHsIqVA8gMgaaCh9GTOoHEBmDHzwZhxg4BBAZ/a9vwMp4BBDNny/GirgEEP1+wIYYVAowxryjE/MGrWDqowwsp1rATPW2gtLK197/qs+n0xL6+a1YRrWA2Tcr9pRkZyYmZJa+dXnMoGjf78BSqgUY87PTk8O9XSdfzrPbd7n7AxTlehGWU/MiDngv1eVqWbUenaxu7EA0ZQPu0v8+s8f2+DuDZHV1K6KoHHDXxFlXwjMX/WRxLh1WigcQjRzbmHLkDkXoH9pgoXwAGdf2ai/dooipA7BQP4BopCbJeZMibhcjgkMAzTWn5f9AEec2IIxFAAVaH8u/aQk6hDAeAaS3pjlvUVhvNkxMAijQnFR1h8Ia4xHCJYDmarQjfjL9WYAQNgE0vDf1IoWdiMciPgHUvWn3IJn+2I5FjAKoUXuPwuqxiFPAsGuzh0zX0rGAUwB9ZqvVKWSmEgtYBYyXb/6FTKfiEMQqgFo1N5l6HAjiFTCU6xyjEF85gngFUF3yZTK9jSBmAV32BjJ9qQEAswBv3nM+CvE4AIBZgF7t6KOQ0SIAYBZAzVoHhfj3AwC3gM7ERjIdBgBuAZ6Mg2RyAwC3AG/2C/MUchoAuAVMlrgmKKQtAfeLvWN2al1Mjzy/c2B6asFcmw33S/w25671UZKSVBz6LOdT8QAk4MH4Cq3jRfy0a5JCziYA4BbA/meU/R8Z+1uJJsvN3D4AYBZgvZ0eKQQAZgHWBc3PHBc01iXlFxyXlLXMF/VDOZZtlTIE8Qpo0RrJ9FMmglgFjJc90U+mkwy3Fj+11bHe3I3aXu/mt71uuJk/4Oje9OwQ50dMwxWpX3N+yDdXox31k2lgJ0K4BASakqrGKMzN7UG33pK2m/NRA38L78Mes02prI/bBA88/UgRt4sQoX6A3l2hVf1KEVOvwkL5gBH3xpSjY9ag44/AQvGA8c9LE5xsj13qQ2fKbVnvDpHVd1sQRdmAgLerNkfLquvVyep6PpZR7/C319PZXJ1rT3YuP/xdiBgUOn5fXpKdkag5XPVX/qElruYhBoUGILYXuioPNnb0+QxaQm/fghhYjKD4jnMYQYntt1dYDAHFMtdehBXxCDD6DnEehDP+OpaNWNQP0AdOFDAeBmU9jmv4ek5VMh2IXhhJry/LjMcaKPJSgG8utJ12H9639pcCyGsZhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKI/5d/AUgQQAYwekQnAAAAAElFTkSuQmCC",
    "_type": "card"
  }
]

The name updates correctly, but the picture display in the app remains unchanged. Interestingly, the very first image received for a tid sticks around even after removing the friend, restarting the app, etc.

The logs do show I MessageProcessor: Received incoming message: MessageCard on owntracks/http/~lup/testphone, but nothing else of note.

(Yes, the issue persists with the same behavior when using two-character values for the tid.)

@ckrey
Copy link
Member

ckrey commented Jan 27, 2025

My guess is you confusef the app by using a tid containing a /. This is treated speiually as we use it as a topic level separator in MQTT mode.

And topic should be used consistently. It defaults to owntracks/http/<tid>.

@Fang-
Copy link
Author

Fang- commented Jan 27, 2025

Thank you for the suggestions. Removing the / from the tid does not resolve the issue for me. For the topic, you're right that I was not providing it consistently, and in maybe the wrong format. I tried with owntracks/http/<tid>, or omitting it entirely (letting the app default) but the problem persists.

To simplify the problem case, I hard-coded the tid and topic values in the response, resulting in the below json. The behavior remains: the name is applied, but the face isn't.

Initial response:

[
  {
    "name": "Mr. Lup",
    "topic": "owntracks/http/ab",
    "tid": "ab",
    "face": "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAAAAAB3tzPbAAAEXElEQVR42u3cXUxbZRzH8d9pw2sBGdBYlKhzQajBxL3ghTPZBtG44ZgyNVkgcTcmGzjnWi/Ui2WgC3BhduEyM43cz2zKxUhWoklxnUhh42UzdkscbkkBE2CR0nqqpTOoT3pAn2RbyNZf9v9ePVckn4S255zn/xzcJA83yROAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAoEoA+AQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAouiNAMvrbrTYXicaTaQeIejdtucVqnt/W8Ib345PBsJlMH8BcLW4ze5G7vtUXTtAC/s5R9eZXUwvEAADZ61rH/mQGAChrGfyDGgCUvvPTAjUAKP/kBjcAGdsHktQA4NHjMQpAobMoPwP/V+5bkwSA7K5LQ33dn777UoXDwLKM7ZfTH5B1uOdMf2giGp/o+2hzIZb17IW0ByAjKyevpLJm7xcjkcg5b7kNS1ofTHuAyubc0j5qjne4DVhbd4EFAMB4cNeZ2C8flMLaxss8AAD5O/3x77faYWnHFBMAKD5wffbQKqQy3o5RAYANp80v1yBV7vEkFwDFnfOBtUi1eoAMgMzm6eFnkGrHDTIAbI2/Dq+1gI6yAWA0TgfWAKrKEBsAtub5E6sAlSfBBkBmp3nIDtXDQ3QAlJye2Qqo9iXoAKi+drYUqkcu8gHgMd8DVG2EgBL/VTdUG6b4AHgt1mGodXY3IaDAd/UJqPYs8AHQaHqhqgoTAlyjgUK1dvgIAWif2wzVh4yAmkgrVC+bhADnyLcOtXaHCQFGV7hCrYuChAA0m3VqaT/JCKiNeqA6wghwTx6DyssIcIa+zlDr3YyAvH5/vlo3xO8aIFKXlbsi5RR/c74s5591ZkPsrgESlwLnVqb+2fmBf/9W4MeEAO6bf6EV/BD/4M9T651xQgD91yj9Dxn9pUSL5WLuFCHAejldPEgIsN7QPMl4Q2O9pXyF8Zayg/ym3jVmeazSSwhoMj1QPTXBByjo/bkcqr2EjxZfj7VTP9xd8ni9mvDxupd8g6P62ncu5i2mkp6ZF5k3+TI7zYN2qMrOs22z2lqWbHR72Ta6jabps8yjBvYm7mGPrJYZ6nGbxYGnp5FqdZBq4Mmo7jFPPI5UuZ9RjZwVe6/PHiy0gvb/TjT0V/BqXzxAO3ZpuHb5YuPvu2DtuSskg682Z03HmDneXmnA2vrhdB89Xhz+drprm7tGI3OB/w5/D6b78HfW4R5ff2gyaob9bZsewLI2jqT9+H1218VBf/cxT12FA8sz6q+k/wEI6I+gOPYzHEHR99jnHIeANGXWB6mPYVUcpT4I99CBUJL3KKJRtm+I+DAo93FcR9WebtYD0YtH0tt6JxKELwV4YVvDbu+RU8GwmZTXMsiLMW4vAQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSgD4BCIAiAegTgAAoEoA+AQiAIgHoE4AAKBKAPgEIgCIB6BOAACgSwL3uL9KfM1jWSEisAAAAAElFTkSuQmCC",
    "_type": "card"
  },
  {
    "acc": 127,
    "lon": 1.23,
    "alt": 52,
    "tst": 1731875032,
    "topic": "owntracks/http/ab",
    "tid": "ab",
    "batt": 72,
    "lat": 45.6,
    "bs": 1,
    "vel": 0,
    "_type": "location",
    "vac": 2
  }
]

Follow-up, which changes the name, but not the image:

[
  {
    "name": "Mr. Loop",
    "topic": "owntracks/http/ab",
    "tid": "ab",
    "face": "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAAAAAB3tzPbAAAEX0lEQVR42u3c3U9bdRzH8Q8ox0IxAxKBJpvMZMO48bDxIK6TJhpYwi7QLXKP0cVlXixeAFFh2YV6YZlzwpZ4MxPIEnXomGxGA9sS54XswURiQTKnBgVTYAiUx7TnfF2hpz0FiiMhy+/rvq8/oMk76WnP73d+3wMhhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKsIvHRe5VsT0yAchLdVy7do65vL7R94n5jf5FDgzqSO2ltDP+op72h3BGP/6JowALD1/Pxi+lxWJXKAUEzNxpyHsIqVA8gMgaaCh9GTOoHEBmDHzwZhxg4BBAZ/a9vwMp4BBDNny/GirgEEP1+wIYYVAowxryjE/MGrWDqowwsp1rATPW2gtLK197/qs+n0xL6+a1YRrWA2Tcr9pRkZyYmZJa+dXnMoGjf78BSqgUY87PTk8O9XSdfzrPbd7n7AxTlehGWU/MiDngv1eVqWbUenaxu7EA0ZQPu0v8+s8f2+DuDZHV1K6KoHHDXxFlXwjMX/WRxLh1WigcQjRzbmHLkDkXoH9pgoXwAGdf2ai/dooipA7BQP4BopCbJeZMibhcjgkMAzTWn5f9AEec2IIxFAAVaH8u/aQk6hDAeAaS3pjlvUVhvNkxMAijQnFR1h8Ia4xHCJYDmarQjfjL9WYAQNgE0vDf1IoWdiMciPgHUvWn3IJn+2I5FjAKoUXuPwuqxiFPAsGuzh0zX0rGAUwB9ZqvVKWSmEgtYBYyXb/6FTKfiEMQqgFo1N5l6HAjiFTCU6xyjEF85gngFUF3yZTK9jSBmAV32BjJ9qQEAswBv3nM+CvE4AIBZgF7t6KOQ0SIAYBZAzVoHhfj3AwC3gM7ERjIdBgBuAZ6Mg2RyAwC3AG/2C/MUchoAuAVMlrgmKKQtAfeLvWN2al1Mjzy/c2B6asFcmw33S/w25671UZKSVBz6LOdT8QAk4MH4Cq3jRfy0a5JCziYA4BbA/meU/R8Z+1uJJsvN3D4AYBZgvZ0eKQQAZgHWBc3PHBc01iXlFxyXlLXMF/VDOZZtlTIE8Qpo0RrJ9FMmglgFjJc90U+mkwy3Fj+11bHe3I3aXu/mt71uuJk/4Oje9OwQ50dMwxWpX3N+yDdXox31k2lgJ0K4BASakqrGKMzN7UG33pK2m/NRA38L78Mes02prI/bBA88/UgRt4sQoX6A3l2hVf1KEVOvwkL5gBH3xpSjY9ag44/AQvGA8c9LE5xsj13qQ2fKbVnvDpHVd1sQRdmAgLerNkfLquvVyep6PpZR7/C319PZXJ1rT3YuP/xdiBgUOn5fXpKdkag5XPVX/qElruYhBoUGILYXuioPNnb0+QxaQm/fghhYjKD4jnMYQYntt1dYDAHFMtdehBXxCDD6DnEehDP+OpaNWNQP0AdOFDAeBmU9jmv4ek5VMh2IXhhJry/LjMcaKPJSgG8utJ12H9639pcCyGsZhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKI/5d/AUgQQAYwekQnAAAAAElFTkSuQmCC",
    "_type": "card"
  }
]

If there's any other information here that would be useful for debugging, please let me know, I'd be happy to provide it. Able and willing to run an instrumented build of the app if that's necessary.

@jpmens jpmens changed the title Card image does not change after being set once Card image does not change after being set once in HTTP mode Jan 27, 2025
@jpmens
Copy link
Member

jpmens commented Jan 27, 2025

So the CARD is being processed (the users' name changes), but the face isn't being replaced.

What happens, after the CARD is processed if you restart the app (swipe out, kill, restart)?

Also, please tell us which version of OwnTracks you are using and which Android device / OS.

@Fang-
Copy link
Author

Fang- commented Jan 27, 2025

What happens, after the CARD is processed if you restart the app (swipe out, kill, restart)?

The old/initial face keeps being displayed. Receiving a new response after full restart continues the same behavior (changing the name, not the face).

This is on:
Owntracks Version 2.5.3 (420503003) - Google Play,
Android 14 (kernel version 5.15.148-android13-8-29539737-abF731U1UES5DXLF),
with One UI 6.1.1,
on a Samsung Galaxy Z Flip5 (SM-F731U1).

@jpmens jpmens added the bug label Jan 27, 2025
Fang- added a commit to Fang-/owntracks-android that referenced this issue Feb 4, 2025
The decoding and pre-rendering of the base64 face data in contact cards
gets cached. When receiving a new card, the contact would get updated,
but the `ContactImageBindingAdapter` would continue pulling a stale
bitmap from the cache.

Here, when applying a `MessageCard` to the `MemoryContactsRepo`, we make
sure to remove the relevant entry from the cache. This way, the
`ContactImageBindingAdapter` will decode and pre-render the new value,
and put that up-to-date entry into the cache for future use.

Fixes owntracks#1966.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants