yashsingh1/xdaforums huggingface dataset:
[Xposed Framework Modules] Lanchon:
> could you go over one more time the steps you went through and the end result? What is your current status of chats/conversations?

to recap, these were my steps:

>>> was running old grindr 4.x and it stopped working (server message: you HAVE to update). newer grindr 4.x versions couldn't mmap my huge db, so i didnt use grindr for a few weeks.

disable grindr app

go offline (airplane mode)

update mod from 4.x to 5.2.1

update app to 5.2.1

reboot

enable app

>>> migration happened

>>> old messages and favs show up ok.

take titanum backup of app (this is my db#1 i sent you)

go online

>>> no grid refresh, no reception of pending messages

back up msgs locally using mod (this is my db#2)

clear app data

reopen app, log into grindr via my usual credentials (same account as before, guaranteed!)

>>> old messages gone, old favs ok, my profle pic and data are ok, grid refreshes ok. pending messages received ok.

>>> people that know me see me back and talk to me, they have me as a fav and have the chat history: MY ACCOUNT HASN'T CHANGED.

restore msgs using mod 5.2.1 from local backup, choose the only local backup that exists. (the email displayed for that backup matches the one i used to re-login in, of course.)

>>> LOCAL RESTORE FAILS: "you cannot restore chats from a different Grindr profile!"

update mod to 5.3.0

restore msgs using mod from local backup, choose the only local backup that exists.

>>> all conversations restored. zero chats restored. all the restored conversations are empty.

>>> (this is my db#3)

note that i talked about deleting messages, but i DID NOT delete any messages.

current status: i see all restored conversations, but no restored messages. the few messages that are there are new messages i received on grindr 5.

> I suspect the problem might have something to do with the sheer volume of data you have.

i've been accumulating data non-stop from grindr 1 days, since i hacked grindr 1 and 2 myself (didn't publish) in many ways, including disabling chat pruning.

> Since Grindr periodically trims the chat history, it wasn't really designed to preserve nearly 16K conversations. I actually encountered a problem where I maxed out the SQLite query limit and had to batch the operations in groups of 500 or so.

some dbs have non-transactional modes that allow unlimited data modification with one SQL statement.

> I haven't really examined Grindr's backup/restore code to see what they are doing, but there might be an issue where they are maxing out the SQLite query limit on restoring conversation IDs. I'll do a little investigating to see what I can come up with.

i thought you had rolled your own backup code, didnt know you were reusing grindr's.

> Can you attempt a restore of the huge chat DB and then take a logcat checking for any messages from the Grindr app? SQLite errors should be logged.

not needed, i took a logcat at the time restored the mod backup using mod 5.3.0 (the restore that 'succeeded'). the logcat didn't mention the case insensitive string "grindr" at all. (my logcat is extremely spammed, there's no way to manually look at 10 minutes of logcat.)

thanks!
[Xposed Framework Modules] GrindrGuyNYC:
The SQLite errors might not mention grindr at all. Can you check for SQL?

Regardless, I'll send you a special build of the module with logging enabled.

EDIT: To answer your above question, I do use my own code for backups however the bulk database inserts are methods that exist in the Grindr app which is why I suspect there may be an overflow situation - either out of memory or simply too many queries. It's possible that on the bulk insert, there is code that performs a query on every single messageId or something similar which may result in failure of the entire transaction.
[Xposed Framework Modules] GrindrGuyNYC:
LATEST VERSION:

GrindrMod 5.3.1

CHANGELOG:

Updated for Grindr 5.3.1

Fixed notification sound issue on 5.3.0+
[Xposed Framework Modules] Dead Pool Brasil:
The new version has come out! Thank you. And how do I install it? Do I install the Edxposed and access there?
[Xposed Framework Modules] genesis89:
Won't work with EdXposed, not for the time being at the very least. This module only works on Rovo's Xposed. If you're on Pie, you need to downgrade to older version of Android or wait until Rovo release the Pie update (probably won't happen).
[Xposed Framework Modules] marik9581:
Hi

How can i unsend my pics in a chat?

In prevoius versions i long pressed the pic and unsent it. Now its not working.

Also when i click on the custom gps location text the mod crash.
[Xposed Framework Modules] GrindrGuyNYC:
The ability to unsend messages was removed several versions ago. It is no longer possible.

Please grant permission to "draw over other apps" to GrindrMod in Settings->apps->Special Access->Draw over other apps

Not sure what happened to the permission check within the module, but until I fix it simply grant the permission manually.
[Xposed Framework Modules] marik9581:
It is granted.

Still crashes.

So the most important feature for me is the unsent pics and it wont be back?

Do you know if in the xtra paid plan it is enabled?
[Xposed Framework Modules] GrindrGuyNYC:
LATEST VERSION:

GrindrMod 5.3.1.1

CHANGELOG:

Fixed crash on failed permission check for map overlay (tap on GPS accuracy / custom location text)
[Xposed Framework Modules] marik9581:
Thanks for the fix but still stopping.

I dont know why.

I tried to remove the check from the permission and then tapped the custom gps text.

It opened the permission and i checked it.

Go back and try again and grindrmod has stopped.
[Xposed Framework Modules] GrindrGuyNYC:
Can you send a logcat?
[Xposed Framework Modules] marik9581:
How i do it?

---------- Post added at 04:57 PM ---------- Previous post was at 04:56 PM ----------

Theres no way to bring the feature back to unsend pics?
[Xposed Framework Modules] GrindrGuyNYC:
Obviously not, or else I would have done it!

#logcat -d

after it crashes
[Xposed Framework Modules] marik9581:
Where do i type this? I have only my cell.. Its not connected to any pc.
[Xposed Framework Modules] GrindrGuyNYC:
Download a terminal emulator or a logcat utility. CatLog, maybe?
[Xposed Framework Modules] GrindrGuyNYC:
Just as I suspected. I'll batch the restore lists and that should fix it.

EDIT: But still send me the logs after you do the restore using the GrindrMod with extra logging.
[Xposed Framework Modules] Lanchon:
the msg/photo unsend was based on vulnerable client behavior where if an already existing message was received again (message identity is determined by message unique ID), then the new message overwrote the existing one. the official client never sends two messages with same ID and different content, but the modded client did and that was the trick: send a sort of empty 2nd message to delete the first.

grindr is very probably monitoring this thread, and when they saw this exploit in the wild they patched the client with a saner behavior. so grindrmod can no longer unsend; if you try, all you can do is give yourself away as a grindrmod user to the system.

so far i applaud grindr for -AFAIK- always seeking technical solutions to challenges posed by creative users instead of going witch-hunting with bans or legalese (even though they are far from technically great; but they are improving over time). i used to have grindr xtra on grindr 1, 2 & 3 for free using a modded client that simply asked for extra features from the server, as the xtra checks were all client side (dumb). at some point they began double-checking server-side and refusing my xtra-style requests. they could easily identify me then as an abuser and ban my account, but they didn't; they just fixed the issue server-side and moved on. grindr is great in that regard, they are good sportsmen.
[Xposed Framework Modules] GrindrGuyNYC:
Actually, the last time I checked, you can still resend the message with a different body - however - the client on the receiver end checks for an existing messageId and doesn't allow modification of the database entry if it already exists, it simply discards the new message. So the check is still on client side, but it is on the receiver portion of message handling.
[Xposed Framework Modules] Lanchon:
hey, about the logcat i PM you...

i didn't have a pre-import backup of grindr app, so i simply re-tried the import. conversations and profiles are thus already in my app db, but not messages. i figured that this should be tolerated by any restore algorithm, and it saved me time.

in this re-restore, the messages again failed to be loaded to the app db.

(note that i removed some spam from the log: GCs, etc)

---------- Post added at 01:08 AM ---------- Previous post was at 01:04 AM ----------

i know, thats what i meant by "they patched the client with a saner behavior. so grindrmod can no longer unsend". still, they could easily mine their msg forwarding db to spot msg forgery attempts server-side.
[Xposed Framework Modules] Sr.BernS:
Amazing application, thank you very much for reprogramming the local backup.

Can you customize it in sound for messages from favorite contacts?

you are the best.

Sorry for my poor English hahaha
[Xposed Framework Modules] Lanchon:
success!!! was able to import my huge msg db with the preview of 5.3.1.2 that you sent me against app 5.3.1. taps were also imported. thanks so much!!! i took a logcat, but since everything went smoothly i see little point in sending it to you.

thank you again!!! :)
[Xposed Framework Modules] GrindrGuyNYC:
No problem. Thanks for helping me debug!
[Xposed Framework Modules] GrindrGuyNYC:
LATEST VERSION:

GrindrMod 5.3.2

CHANGELOG:

Updated for Grindr 5.3.2

Fixed error restoring chats for large chat message databases

NEW: Filter inbox by "not replied" chats (they have not replied, you have not replied)

NEW: Disable chat message pagination*

Misc bug fixes + performance improvements

NOTES:

*Recently, the app has begun paginating the chat message history which causes a slight delay when scrolling up as it loads older messages. This new module feature allows you to disable this and load ALL chat messages at once, allowing for faster scrolling without delay.
[Xposed Framework Modules] GrindrGuyNYC:
I'll have a look. At one point this was possible, but then they removed many of the event-specific notification sounds. I might be able to hack something together.
[Xposed Framework Modules] willysmith:
Thanks for the continued development on this!

I was *really* disappointed to see "auto generate profile names for blank profiles" removed. In my area there are a lot of blank profiles, so this was uber handy. Any chances of reimplementing it?

I also saw someone suggest a feature to change the Grindr notification icon. That might be a nice feature to be less evident when notifications arrive.

And I personally don't like that when a new notification comes and you click on the notification it takes you directly to the message view, making the message viewed. I'd prefer being taken to the inbox list where I see the preview and then decide when to open it. Essentially an option to go to the Inbox rather than to the message when clicking on the notification.

And speaking of feature requests, would it be possible to have tap on "nearby" first go to the top of the list (as it is now) but a second tap would then refresh (rather than having to pull down)?

Thanks always!
[Xposed Framework Modules] GrindrGuyNYC:
I removed it because it was too difficult to maintain and my focus was directed towards getting the module updated for the huge number of changes in the new Grindr. I will consider re-implementing it at some point - possibly making it better than it was before.

I will take that under advisement and see if it can be done.

Yes, that is definitely possible.
[Xposed Framework Modules] marik9581:
I understand now why the unsend function was removed.

Thanks a lot for everytging.... But grindr guys have to implement this in their app. Its basic privacy function to avoid unwanted issues, if you know what i mean.

I dont understand why they so against it.... It is very important feature, specially in this kind of an app.

Hope it will be back soon or other hack to do the same.
[Xposed Framework Modules] GrindrGuyNYC:
That is what blocking is for. I don't know of any other social media platform that allows you to unsend messages.
[Xposed Framework Modules] marik9581:
Telegram
[Xposed Framework Modules] GrindrGuyNYC:
Okay. Well I'd suggest contacting Grindr about this, because I can't just make something happen that's impossible.
[Xposed Framework Modules] ShinjiCreek:
Hey GrindrGuy,

First thanks for your job

Second, have you planned to update this module on edXposed ?
[Xposed Framework Modules] GrindrGuyNYC:
Please search the rest of this thread. GrindrMod cannot work on EdXposed, because it does not currently support hooking resources.
[Xposed Framework Modules] marik9581:
Sent you in private msg a screen shot of the catlog
[Xposed Framework Modules] GrindrGuyNYC:
LATEST VERSION:

GrindrMod 5.3.2.1

CHANGELOG:

More notification sound options

NOTES:

*Can now add custom notification sounds for message from favorite profile, taps, and photo message. Removed "push message" notification sound. (Now combined with "chat message")
[Xposed Framework Modules] Lanchon:
i periodically enter into this situation in which the grid is no longer refreshed. says "unable to refresh". i can still use the explore option and the grid refreshes fine there. it stays this way for a couple of days, then goes back to normal.

the whole thing seems to get triggered when i use explore.

when in this "no refresh" mode, grindr soon dies. the reason is the mod:

--------- beginning of crash

03-10 06:26:28.527 8556 8597 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #3

03-10 06:26:28.527 8556 8597 E AndroidRuntime: Process: com.grindrapp.android, PID: 8556

03-10 06:26:28.527 8556 8597 E AndroidRuntime: Theme: themes:{}

03-10 06:26:28.527 8556 8597 E AndroidRuntime: de.robv.android.xposed.XposedHelpers$InvocationTargetError: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.grindrapp.android.persistence.model.Profile.getProfileId()' on a null object reference

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at de.robv.android.xposed.XposedHelpers.callMethod(XposedHelpers.java:1225)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at com.grindrmod.xposed.helper.CascadeHelper$1.run(CascadeHelper.java:40)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at java.lang.Thread.run(Thread.java:818)

03-10 06:26:28.527 8556 8597 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.grindrapp.android.persistence.model.Profile.getProfileId()' on a null object reference

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at com.grindrapp.android.manager.PersistenceManager.a(SourceFile:128)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at com.grindrapp.android.manager.PersistenceManager.persistCascadeProfiles(SourceFile:223)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at com.grindrapp.android.manager.PersistenceManager.persistCascadeProfiles(<Xposed>)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at com.grindrapp.android.manager.PersistenceManager.persistCascadeProfiles(SourceFile:211)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at java.lang.reflect.Method.invoke(Native Method)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	at de.robv.android.xposed.XposedHelpers.callMethod(XposedHelpers.java:1217)

03-10 06:26:28.527 8556 8597 E AndroidRuntime:	... 5 more

03-10 06:26:28.535 2898 4118 W ActivityManager: Force finishing activity com.grindrapp.android/.HomeActivityOriginal
[Xposed Framework Modules] GrindrGuyNYC:
Yes, this happens to me too and I wasn't sure what was causing it exactly. Clearing Grindr's data and logging back in seems to fix it. I will look at this logcat and see if maybe there is some issue being triggered when I call the method to refresh the grid.

EDIT: Actually, next time that happens, try disabling profile history - or clearing it - and see if that fixes the problem. It looks like the error is caused by a null profile object - possibly being retrieved by the profile history method.
[Xposed Framework Modules] Lanchon:
i was "a bit" high last night when i wrote that lol, i'll PM
[Xposed Framework Modules] GrindrGuyNYC:
I believe that Grindr has implemented a very aggressive pruning routine for the profile table - where it removes "stale" profiles after xx number of days (instead of 1 year previously) so what is happening is that a profile in the history that does not exist in the table is returning a null value for the profile object. I will fix and release an update, but for now to correct this issue, simple disable or clear the profile history and you should be able to refresh the cascade.
[Xposed Framework Modules] Lanchon:
yes, i was about to write: disabling profile history works as a fix.

i hate this "ephemeral apps" concept. what the eff is wrong with making people accountable for their actions??? once a guy behaves like a jerk i want to never forget that and never give the guy another chance. life is too short to spend it on d*ckwads
[Xposed Framework Modules] GrindrGuyNYC:
Well part of the reason this module was created, was because of the ridiculousness of the fact that one party of the conversation had the power to obliterate the entire conversation from existence. No respectable social media platform allows this and it creates what I believe is an extremely toxic environment. You could be chatting with someone for weeks, months or years and in an instant, the chat history will disappear because the other person decided they no longer wanted to chat with you.

There are so many ways they could improve this to make it less toxic. For starters, only allow total chat deletion if the chat is either one-sided (one party did not reply) or if it only lasted a few minutes or hours. Another option would be to only erase photos and location messages they have sent in the event of a block, but maintain the rest of the history to give some semblance of privacy to the blocking party - although it is still fairly easy to screenshot photos you have received.

This idea of erasing the entire chat history - instantly - is so toxic, it should be illegal - or at least regulated. As these apps become more and more integrated into our daily lives, the impact they have on our mental health and well being becomes that much more significant.
[Xposed Framework Modules] Lanchon:
that grid refresh issue that had me backup and restore my huge msg db, and in turn triggered those db restore bugs (profile id change, db too big), was probably the recent profiles thing. but im sure you thought of that already.

---------- Post added at 06:29 PM ---------- Previous post was at 05:47 PM ----------

> it should be illegal

it *is* illegal, in some saner places, such as the EU. there you can request THE COMPLETE set of info a company has on you. this IMO includes all your chat history. and it specifically includes messages sent to you, as this data related to the profile the have on you, is absolutely linked to you, and is possibly even partly your property.

but we are extremely far from any legal action here. much earlier than that, law should force communication companies that reach critical mass in a market (think whatsapp, facebook, IG, grindr, scruff, etc etc) to open their platform to alternative implementations. this would more or less end the "anti-features" like ephemerality ("hey! we want you to run our software on your computers, it will do stuff you want not done like deleting your data... try it out!!") any many other issues without needing any specific laws for each of them.

this is what they did to the public telephone system in the US, and was a huge win for "we the people". unfortunately it wont happen again i guess -at least in the US- now that politicians are representatives of their funding entities, not the people.

EDIT: see this; really...: https://www.youtube.com/watch?v=H-f4oiyiHwM

grindr is in for the quick buck. i don't believe they ever cared for the community they were creating. they wanted to provide the illusion of "endless pool of ****" by allowing as much anonymity as possible, unblocking profiles you block, deleting your old messages so you later believe the *sshole you invested time in unveiling is now a possibly decent new guy (remember grindr 1? messages deleted after 30 days... wow!), etc. they sort of succeed in creating that illusion. they also succeed in creating a sh*thole environment where people get extremely frustrated and leave to never return. IMHO, grindr is tolerable only because of hacks. and also very much related to the quick buck... they want money, not issues! so why handle user reports of other users like any other social platform out there? its much more clever to have the abuser block you and delete all traces, thus prevent you from creating an annoying, expensive user report that some poor guy in india would otherwise need to handle for $2 an hour.

forget it, grindr will never care about these things. and facebook and google are not buying this one mangy dog.
[Xposed Framework Modules] tripdastati0n:
can yall put the yellow outlines on people we have talked to in the past? that was the best part :)
[Xposed Framework Modules] GrindrGuyNYC:
It's now a paid feature, so no.
[Xposed Framework Modules] marik9581:
I pm you with fixed catlog.. Hope its good now.

About your discution here, dont forget there are guys want their privacy and anonymousy.

So if they know the guy, they want to minimize the chance of damage and remove all traces. If i block you so there is a reason. Maybe not for you but for me. Sometimes its also a filteration method so you wont chat with a guy you chat before and dont want to chat with again.

This is why preventing screenshots and deleting pics are important in this kind of an app.

Keeping some of the users privacy is important not less than others.

But they can do it better.... Like if i unblock you so the history comes back and then i know we talked and what we talked and choose to give you a 2nd chance or not. You wont appear like a new guy.

Anyway, for my concerns, the privacy is the most important thing in this kind of apps.

This is not fb or wa.
[Xposed Framework Modules] pcxnet:
[MENTION=9193758]GrindrGuyNYC[/MENTION]

I realise you've said you're not interested in supporting non-official Xposed, but I was hoping you could take a look at the Xposed for Pie workaround that is purely a Magisk Module.

Not only does it support Android Pie (Which is great) but has the added bonus of still passing all the security checks, so you can use things like Google Pay etc, which you can't do when you use real Xposed.

I'm not sure if there are hooks that you use that aren't supported, or maybe its a simple fix to get it to work.

https://www.xda-developers.com/xposed-framework-unofficial-port-android-pie/

I know my Xinsta works as well as SnapFreedom, and they both do similar things, so maybe there's hope that this can work with that.

Otherwise, going forward, this wont be used as phones get updated more to pie, and I have to make a choice between using Google Pay and my banking apps, or a grindr mod.

Thanks