In this case, I really don't think it's realistic to expect an
OpChange from the backend. The backend already sends informations that
are relevant for the sync process. Given that "sync" does not uses the
processes uses for undoable change (indeed, it should not be
undoable), no OpChange is generated.
It seems reasonable in this place at least to directly notify the
observers.
Given that the observers expect an OpChanges, I create one, and simply
assume everything may be changed. This seems reasonable in case of
sync, and it's sufficiently rare that the cost won't be prohibitive
anyway.
Fixed: #16943Fixed: #16942
I was very surprised to see we used dynamic and not static one. I
tried to transform them into static shortcut, which seems cleaner. And
realized that we can't for a very absurd technical reason.
So I document it here, hoping nobody else will lose time on it.
I discover that each time an action occur in the reviewer, the deck
picker is updated. This is uselessly costly.
I tested and when going back to the deck picker, I still get the up to
date data immediately.
* We previously removed the camera permission from the manifest file (commit: fix: remove camera permission #14162, by Brayan). However, the code now includes a check for this permission that was introduced in commit 6a8ede0. Since th permission is not declared, this check fails, and the camera cannot be launched.
* The camera feature is declared in the manifest file as <uses-feature android:name="android.hardware.camera" /> rather than using <uses-permission android:name="android.permission.CAMERA" />. This omission causes the current permission
check to always return false, preventing users from accessing the camera options. This PR corrects that issue by removing that permission check.
I dislike seeing this build-time deprecation warning every build,
and investigated if we could remove this. We can't but I was able
to see when, so I wrote it out in order to not forget and spend
the time researching again
The comment I left should show up in standard searches for removable
code based on VERSION_CODES / minSdk when we bump versions
the template previewer was tightly coupled with the template editor, and
that isn't a good design. To solve that, I decoupled the template
previewer in two fragments: a view and a standalone page.
All of the original style of the template previewer was fixed.
I gave credits to BrayanDSO in TemplatePreviewerPage.kt because most of
the code is his and I don't want the credits myself
I also removed the duplicated TabLayout in the card editor because it
didn't make sense to me.
this test is marked flaky so it won't ever run in CI but it was
failing locally for me every time as it was comparing the first
char of the string it pulled to a string, instead of string vs string
* added the alertDialog when users deletes the card type that causes orphan note which describes why the card type cannot be deleted also added the messages into the strings.xml
* completing changes requested for the fix-16789
* made changes in the test file to match the text in the fix:16789
* removed the unused string after adding the new string to test case.
Keyboard shortcuts:
Ctrl+Shift+A : Add tag
Ctrl+Shift+E : Export selected cards
Ctrl+Alt+N : Reset card progress
Ctrl+Alt+T : Toggle cards/notes
T : Show filter by tags
Ctrl+Shift+S : Reposition selected cards
Ctrl+Alt+S : Show saved searches
Ctrl+S : Save search
Alt+S : Show suspended cards
Ctrl+Shift+J : Toggle bury cards
Ctrl+J : Toggle suspended cards
Ctrl+Shift+I : Card Info
Ctrl+O : Show order dialog
Ctrl+M : Mark note
Ctrl+Z : Undo
ESC : Select none
Ctrl+1 : Red flag
Ctrl+2 : Orange flag
Ctrl+3 : Green flag
Ctrl+4 : Blue flag
Ctrl+5 : Pink flag
Ctrl+6 : Turqoise flag
Ctrl+7 : Purple flag
it is relatively easy to do an rm-rf directly but there are maintained
workflow actions that remove everything for you
This is the most-maintained fork of the most popular one I've used before
It defaults to true, and each item you remove takes time. I think dotnet
is the biggest one and should be sufficient so only remove it and that
should be sufficient
In PR 16620, I encountered the following error on
ubuntu CI
After research, `CppAssetManager2` errors are typically due to memory leaks, often by not calling close on Scenarios
```
TagsDialogTest > test_SearchTag_spaceWillBeFilteredCorrectly FAILED
java.lang.OutOfMemoryError: Java heap space
at org.robolectric.res.android.ResourceTypes$ResTable_typeSpec.getSpecFlags(ResourceTypes.java:1095)
at org.robolectric.res.android.LoadedArsc$TypeSpec.GetFlagsForEntryIndex(LoadedArsc.java:116)
at org.robolectric.res.android.CppAssetManager2.FindEntry(CppAssetManager2.java:699)
at org.robolectric.res.android.CppAssetManager2.GetResource(CppAssetManager2.java:869)
at org.robolectric.res.android.CppAssetManager2.ResolveReference(CppAssetManager2.java:935)
at org.robolectric.res.android.AttributeResolution10.ApplyStyle(AttributeResolution10.java:414)
at org.robolectric.shadows.ShadowArscAssetManager10.nativeApplyStyle_measured(ShadowArscAssetManager10.java:1414)
at org.robolectric.shadows.ShadowArscAssetManager10.lambda$nativeApplyStyle$1(ShadowArscAssetManager10.java:1374)
at org.robolectric.shadows.ShadowArscAssetManager10$$Lambda/0x00007f40d092a740.run(Unknown Source)
at org.robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:82)
at org.robolectric.shadows.ShadowArscAssetManager10.nativeApplyStyle(ShadowArscAssetManager10.java:1371)
at java.base/java.lang.invoke.LambdaForm$DMH/0x00007f40d0946800.invokeStatic(LambdaForm$DMH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0948800.guardWithCatch(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0ab3400.delegate(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d094ac00.guard(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d094b000.linkToCallSite(LambdaForm$MH)
at android.content.res.AssetManager.nativeApplyStyle(AssetManager.java)
at android.content.res.AssetManager.applyStyle(AssetManager.java:1147)
at java.base/java.lang.invoke.LambdaForm$DMH/0x00007f40d0941400.invokeSpecial(LambdaForm$DMH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0943c00.guardWithCatch(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0ab3000.delegate(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0946000.guard(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0946400.linkToCallSite(LambdaForm$MH)
at android.content.res.AssetManager.applyStyle(AssetManager.java)
at android.content.res.ResourcesImpl$ThemeImpl.obtainStyledAttributes(ResourcesImpl.java:1394)
at java.base/java.lang.invoke.LambdaForm$DMH/0x00007f40d035d400.invokeSpecial(LambdaForm$DMH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d093fc00.guardWithCatch(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d035dc00.delegate(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0940c00.guard(LambdaForm$MH)
at java.base/java.lang.invoke.LambdaForm$MH/0x00007f40d0941000.linkToCallSite(LambdaForm$MH)
at android.content.res.ResourcesImpl$ThemeImpl.obtainStyledAttributes(ResourcesImpl.java)
at android.content.res.Resources$Theme.obtainStyledAttributes(Resources.java:1692)
```