1874115
Add system name and groups when adding a contact for the first time
Stephen Paul Weber created
1874115
Add system name and groups when adding a contact for the first time
Stephen Paul Weber created
53d1b4a
Dedup across system tags and server tags
Stephen Paul Weber created
092fbbd
Update some screenshots
Stephen Paul Weber created
55461d4
Fix NPE
Stephen Paul Weber created
2c167b1
If we get here with 0 resources to call, don't make the user pick one and then crash
Stephen Paul Weber created
218e769
Merge branch 'shapeable-view-warnings' of git.sr.ht:~hdasch/cheogram-android
* 'shapeable-view-warnings' of git.sr.ht:~hdasch/cheogram-android: Resolve "Failed to inflate ..." warnings.
Stephen Paul Weber created
3804dc2
Ping all online MUCs every second max ping interval
Stephen Paul Weber created
9c06087
Add Note to Self contact
Stephen Paul Weber created
cf0f129
Resolve "Failed to inflate ..." warnings.
After merging 39a2d3e, "Failed to inflate ColorStateList" warnings
overwhelm logcat output. This may be Android version specific. But
on an API 30 avd, this makes it difficult to spot other errors while
debugging. Full traceback below.
https://stackoverflow.com/questions/71746801/getting-failed-to-inflate-colorstatelist-leaving-it-to-the-framework-when-usi
suggests a fix, applied here.
Traceback (slightly reformatted):
```
2023-03-14 15:02:00.951 6324-6324 ResourcesCompat com.cheogram.android W Failed to inflate ColorStateList, leaving it to the framework
java.lang.UnsupportedOperationException: Failed to resolve attribute at index 0: TypedValue{t=0x2/d=0x7f0400eb a=-1}
at android.content.res.TypedArray.getColor(TypedArray.java:528)
at androidx.core.content.res.ColorStateListInflaterCompat.inflate(ColorStateListInflaterCompat.java:160)
at androidx.core.content.res.ColorStateListInflaterCompat.createFromXmlInner(ColorStateListInflaterCompat.java:125)
at androidx.core.content.res.ColorStateListInflaterCompat.createFromXml(ColorStateListInflaterCompat.java:104)
at androidx.core.content.res.ResourcesCompat.inflateColorStateList(ResourcesCompat.java:262)
at androidx.core.content.res.ResourcesCompat.getColorStateList(ResourcesCompat.java:236)
at androidx.core.content.ContextCompat.getColorStateList(ContextCompat.java:519)
at androidx.appcompat.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:48)
at com.google.android.material.resources.MaterialResources.getColorStateList(MaterialResources.java:65)
at com.google.android.material.imageview.ShapeableImageView.<init>(ShapeableImageView.java:114)
at com.google.android.material.imageview.ShapeableImageView.<init>(ShapeableImageView.java:92)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:852)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
at eu.siacs.conversations.ui.adapter.ConversationAdapter.onCreateViewHolder(ConversationAdapter.java:50)
at eu.siacs.conversations.ui.adapter.ConversationAdapter.onCreateViewHolder(ConversationAdapter.java:34)
at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1213)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:899)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:919)
at android.view.View.layout(View.java:22844)
W at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3475)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2943)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```
Hugh Daschbach created
cdec63d
Do not include fallback quote on direct reply
It may be too close to the preceeding message and confusing looking on clients that use the fallback.
Stephen Paul Weber created
1a02bcb
Allow files/images in replies
Stephen Paul Weber created
609f2d5
Include source message in a forked-off thread "show only" view
Stephen Paul Weber created
fbc7c4f
Remove debug log
Stephen Paul Weber created
59a7af6
When cancel a reply, put threads back to default mode
Stephen Paul Weber created
2c1b89e
Tweak swipe detector
Stephen Paul Weber created
124ea2f
Tweak spacing on reply cancel button
Stephen Paul Weber created
4d145b1
Simulate incoming message/edit for incoming reactions
Allow retracting older reaction messages, do not allow editing any of them
Stephen Paul Weber created
606d800
And emoji reply is a reaction
Retracting an emoji reply retracts the reaction
Stephen Paul Weber created
2dd6db0
Save the body we generated
Stephen Paul Weber created
2d226d2
Swipe and reply menu should be the same
Stephen Paul Weber created
426d202
Actually fix swipe detector
Stephen Paul Weber created
efb29e4
Allow reply to images
Stephen Paul Weber created
598b240
Use prepareQuote to format /me and strip deep nesting
Stephen Paul Weber created
51fdb41
Tweak swipe sensitivity
Stephen Paul Weber created
b78d9fc
Swipe to reply
Stephen Paul Weber created
d9b2d17
Rich reply from direct reply
Stephen Paul Weber created
65d0af8
Rename menu item
Stephen Paul Weber created
99625f2
Merge branch 'reply'
* reply: UI for rich replies Reply to message instead of just quote Move quote code to quote helper
Stephen Paul Weber created
9aa5c13
UI for rich replies
Stephen Paul Weber created
c39b81a
Reply to message instead of just quote
If you want an editable quote you can still copy to clipboard + paste as quote. This commit works at a protocol level, but there is no UI to show that you are replying or to let you cancel a reply.
Stephen Paul Weber created
57b0ae8
Move quote code to quote helper
Stephen Paul Weber created
4924be1
Fix NPE
Stephen Paul Weber created
68d55da
Sometimes the span isn't actually there? So don't crash
Stephen Paul Weber created
fbf8b09
point to a privacy policy that doesn’t use anchors
Daniel Gultsch created
9715271
expand emoji range to cover e14
Daniel Gultsch created
4566476
bump agp
Daniel Gultsch created
e0161ae
Fix some copy
Stephen Paul Weber created
b5032c7
Fix NPE
Stephen Paul Weber created
8f4c146
Allow tor in sticker pack download
Stephen Paul Weber created
17aa2ae
Allow getting a set-up client from anywhere
Stephen Paul Weber created
bd7ccc9
Translated using Weblate (Spanish)
Currently translated at 100.0% (9 of 9 strings) Translation: Conversations/Android App (Quicksy) Translate-URL: https://translate.codeberg.org/projects/conversations/android-app-quicksy/es/
gallegonovato created
61eab4e
Translated using Weblate (Spanish)
Currently translated at 100.0% (962 of 962 strings) Translation: Conversations/Android App (shared) Translate-URL: https://translate.codeberg.org/projects/conversations/android-app-shared/es/
gallegonovato created
83bb548
add_contact was being used other places
Stephen Paul Weber created
3ec7678
Allow cancel even if webpage is broken
Stephen Paul Weber created
e8e3c7f
Don't update url unless we have a reason to
Stephen Paul Weber created
fba83e5
Easy import of stickers from signal
Stephen Paul Weber created
4c3d0f7
Merge branch 'start-join'
* start-join: Unify add contact and join channel If a MUC address is entered as a contact, join it
Stephen Paul Weber created
15692fb
Merge branch 'default-stickers'
* default-stickers: Default sticker download offer on first start Scan files so they show up under images Send SIMS with hashes and filename sha-1 is the standard name sha1 is just for bob Send cid with known URL without uploading Option to download default stickers and save their cid and url in database
Stephen Paul Weber created
67646c6
Default sticker download offer on first start
Stephen Paul Weber created
f07f871
Scan files so they show up under images
Stephen Paul Weber created