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

[Feature Request]: 送信取り消しメッセージの判別表示 #154

Open
yo-ka opened this issue Aug 22, 2024 · 22 comments
Open

[Feature Request]: 送信取り消しメッセージの判別表示 #154

yo-ka opened this issue Aug 22, 2024 · 22 comments
Labels
enhancement New feature or request talk トーク関係 view UI関係

Comments

@yo-ka
Copy link

yo-ka commented Aug 22, 2024

提案内容

現在、オプションの「送信取り消しを拒否」を有効にすることで相手方が送信取り消しを行っても、こちら側では取り消されたメッセージを見ることができますが、
そのメッセージを相手方が取り消ししたかどうかを、こちら側で判別できるようにはできないでしょうか。

例えば取り消しされたメッセージの横に小さなアイコンを表示するなど。

現状、「送信取り消しを拒否」をしていると、相手方がメッセージを取り消してもこちら側ではそれが取り消されたメッセージなのか分からず、
そのメッセージにもリプライなどのアクションができてしまうので、メッセージを確認しながらも、そのメッセージは実際には取り消されたものなのかどうなのかを認識したいというものです。

検討の程よろしくお願いいたします。

@yo-ka yo-ka added the enhancement New feature or request label Aug 22, 2024
@yo-ka yo-ka changed the title [Feature Request]: 送信取り消しメッセージの判別化 [Feature Request]: 送信取り消しメッセージの判別表示 Aug 22, 2024
@areteruhiro
Copy link
Contributor

areteruhiro commented Aug 25, 2024

#54 ここでも語られているように技術的には不可能ではないのですが、トーク画面で個々のメッセージを取得するのが複雑になっており、それを画面上に表示するのがめんどくさいです。
一応確認するには、このようなコードで確認できます
一応#78 以前に試したコードがここにあります(root限定ですが)
すみません、直さないと使えないです。
今日の夜にでも直します

@s1204IT s1204IT added view UI関係 talk トーク関係 labels Aug 25, 2024
@areteruhiro
Copy link
Contributor

#155

@auag0
Copy link
Contributor

auag0 commented Aug 26, 2024

kotlinですが、以下のコードのようにSQLiteDatabaseを使ってSQLiteを操作出来ますよー!

import android.app.Application
import android.database.sqlite.SQLiteDatabase
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
import java.io.File

class Main : IXposedHookLoadPackage {
    override fun handleLoadPackage(param: XC_LoadPackage.LoadPackageParam) {
        if (param.packageName != "jp.naver.line.android") return

        XposedBridge.hookAllMethods(
            Application::class.java,
            "onCreate",
            object : XC_MethodHook() {
                override fun afterHookedMethod(param: MethodHookParam) {
                    XposedBridge.log("called ${param.method.name}")

                    val appContext = param.thisObject as Application

                    // SQLite
                    val params = SQLiteDatabase.OpenParams.Builder().apply {
                        addOpenFlags(SQLiteDatabase.OPEN_READWRITE)
                    }.build()
                    val dbFile = appContext.getDatabasePath("naver_line")
                    val db = SQLiteDatabase.openDatabase(dbFile, params)
                    val query = "select content, server_id, chat_id from chat_history"
                    val cursor = db.rawQuery(query, null)
                    while (cursor.moveToNext()) {
                        val content = cursor.getString(0)
                        val serverId = cursor.getString(1)
                        val chatId = cursor.getString(2)
                        XposedBridge.log("content: $content, serverId: $serverId, chatId: $chatId")
                    }
                    cursor.close()

                    // ファイル操作
                    val testFile = File(appContext.filesDir, "test.txt")
                    testFile.inputStream()
                    testFile.outputStream()
                }
            }
        )
    }
}

@areteruhiro
Copy link
Contributor

え、それめっちゃ有益情報です

areteruhiro added a commit to areteruhiro/LIMEs that referenced this issue Aug 26, 2024
削除の際の取得を非rootでも可能に
コード提供
https://github.com/auag0

Chipppppppppp#154 (comment)

感謝します
@areteruhiro
Copy link
Contributor

areteruhiro commented Aug 26, 2024

@yo-ka さん、一度試していただけませんか
limeの送信取り消しを有効にしてお試しください。
1.0UNSENT.zip
No contentになるのは把握済みです、少々お待ち下さい

@yo-ka
Copy link
Author

yo-ka commented Aug 26, 2024

お世話になっております。
今し方確認テストをしたところ、新しく追加していただいたボタンにて、取り消されたメッセージの一覧を確認することができました!
まさしく取り消されたメッセージを判別するという私が望んでいたものが見事に実装されておりました。

また、通常であればまずは取り組んで頂いている事へのお礼をすぐに言うべき所でしたが、できておらず大変失礼しました。
この度は試行錯誤を繰り返し対応してくださり本当にありがとうございます。
感謝しきれません。

@areteruhiro
Copy link
Contributor

Screenshot_20240827-025906.png

一応ここにボタン追加してます

@areteruhiro
Copy link
Contributor

areteruhiro commented Aug 27, 2024

改良して、正しく取得できなかったメッセージのidを別のファイルにうつして、再度アプリが起動されたときに再取得するようにしました
(起動していない時に削除された場合、正しく取得できないため)
1.2UNSUNTREC.zip

XposedBridge.logを最低限に
UNSENTREC1.3.zip

追記

アプリのフレームlimeのバージョン1.2をお借りしてます。🙇

@yo-ka
Copy link
Author

yo-ka commented Aug 27, 2024

ありがとうございます🙇‍♂️
早速1.3を試してみました所、再取得されているのが確認でしましたが、
1.3へアプデ後に取り消されたメッセージの名前が全てNo Nameとなってしまうようになりました。
時刻やメッセージは正常に確認できるので判別することはできています。

また、メッセージではなくスタンプを取り消された際には、左上の数字のボタンは表示されますが内容は空となっており、右上の確認済みのメッセージ内にも保存がされておりませんでした。
もしも対応中の内容でしたら申し訳ございません。

@areteruhiro
Copy link
Contributor

areteruhiro commented Aug 29, 2024

御迷惑おかけいたしております。

今回はスタンプの対応、個人トークのNo name対策として、No nameになっている個人トークを自分で名前を設定するようにし、
以降その名前でログに残すようにしました。
(以前名前を取得できていた場所がnullになってしまったため、そこに自分で新たに設定し直すということです)

UNSENTREC2.0.zip

開いていない際に送信、取り消しされた場合、 No time no contentになるのは把握しているのですが仕様上再起動をなんどもしなくてはいけなくなってしまうので名前を設定したあとにまた、ログ上の名前を変更できるようにしようと模索中です
(名前を設定し終わったあと、アプリを再度開くと再取得するようにはなっているとは思うのですが)

@yo-ka
Copy link
Author

yo-ka commented Sep 7, 2024

更新ありがとうございます。
2.12を試したところ、私の環境では何故か動作しなくなってしまいました。
取り消された後にラインを開直しても未読数字のボタンが表示されず、確認ボタンの未読ログも更新されなくなりました。

また2.0の時ですが、名前を付けるウインドウが表示され、名前を入力しましたが、その入力が保持されず毎回名前を入力するフォームが表示されてしまっておりました。

しばらくの間お返事ができず申し訳ありません。
なにかこちらで提供できる必要な情報があればお渡ししたいのですが、ご教授くだされば提供いたします。
よろしくお願いいたします。

@areteruhiro
Copy link
Contributor

areteruhiro commented Sep 7, 2024

すみません、自分の環境がLIME本体の不具合出てしまったので、解決できるまで放置させてもらいますね、、申し訳ないです。、

@yo-ka
Copy link
Author

yo-ka commented Sep 7, 2024

いえそんな謝らないでください。
色々と対策やアップデートなどしてくださり感謝しきれません。

既知の問題はありますが1.3で一応は私の環境でも使えておりますので、しばらくは1.3を有難く使わせていただきたいと思います。
本当に色々とありがとうございます。

@areteruhiro
Copy link
Contributor

areteruhiro commented Sep 8, 2024

2.5.zip
なおせたとおもいます。

@areteruhiro
Copy link
Contributor

areteruhiro commented Sep 8, 2024

2.567.zip
正しく取得できませんでした。アプリを再起動してください  が再取得できているのにもかかわらずに表示されてしまうのを修正

@yo-ka
Copy link
Author

yo-ka commented Sep 8, 2024

まず大変な状況なのにも関わらずアップデートをしてくださり、ありがとうございます。感謝致します。

早速2.567を試し、正常に動作していることを確認できました!
未読の数字ボタンも表示されますし、右上の確認済みメッセージボタン内にも未読ログがしっかりと蓄積されているのを確認できました。
ありがとうございます!

ただ一点、グループチャット内で取り消された場合に保存される未読メッセージの名前がグループ名だけになっており、グループ内の誰の発言だったのかが分かりづらいかな?と言うところだけが少し気になりました。
が、時間とメッセージ文を自分で見て照らし合わせれば事足りる部分ではあるので、問題はありません。

現状で十分私の実用性に足りておりますので、これでしばらく活用させて頂きます。
本当にありがとうございます。

@areteruhiro
Copy link
Contributor

エラーは解決できました、お心遣いありがとうございます。

少しコードを変えるだけで、
名前も入れれる気がするので、またアップロードし直しますね。

@areteruhiro
Copy link
Contributor

areteruhiro commented Sep 9, 2024

2.5678.zip

改行されてみにくいため、横スクロールを対応
グループの送信者もログにつける

使い方
LIMEの送信取り消しを無効化を有効にしてください。

追記
変なバグがなければ一旦終わります。

@yo-ka
Copy link
Author

yo-ka commented Sep 9, 2024

ありがとうございます!
早速試してみました。
グループ名&送信者も正常に記録され、さらにログも横スクロールでとても見やすくなりました!
素晴らしいです、本当にありがとうございます🙇‍♀️

@areteruhiro
Copy link
Contributor

areteruhiro commented Oct 6, 2024

14.16.0対応しているモジュール帰宅後載せますね
それまで、更新しないでください

@areteruhiro
Copy link
Contributor

areteruhiro commented Oct 8, 2024

app-release.zip
14.16.0

@yo-ka
Copy link
Author

yo-ka commented Oct 10, 2024

アップデートありがとうございます🙇‍♀️
動作確認できました。
有難く使わせて頂きます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request talk トーク関係 view UI関係
Projects
None yet
Development

No branches or pull requests

4 participants