androiddev-social / dodoformastodon Goto Github PK
View Code? Open in Web Editor NEW๐ Mastodon client for Android, iOS and Desktop (JVM)
License: GNU General Public License v3.0
๐ Mastodon client for Android, iOS and Desktop (JVM)
License: GNU General Public License v3.0
We should add iOS targets to our modules (data and domain layers) as early as possible, even without creating the iOS project. This way we will prevent putting jvm specific code to the common source sets.
No response
Add a Multiplatform logger
No response
At some point we should add R8/proguard configuration. Code obfuscation may be not relevant for the open-source project, but we can still benefit from code optimisation and app size reduction provided by R8.
No response
After logging in, there should be a simple FAB or similar on the timeline screen where the user can tap to launch some type of modal/popup/screen and enter characters to create a toot! This should then be visible on the local timeline
No response
./gradlew installDebug, open the App, it will crashed.
Android Version: Android 13
OS: Pixel experience
the crash log
2022-11-25 07:57:49.860 28704-28704/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: social.androiddev.mastodon, PID: 28704
java.lang.NullPointerException: decodeByteArray(byteArray, 0, byteArray.size) must not be null
at social.androiddev.common.utils.ImageLoadingKt.loadImageIntoPainter(ImageLoading.kt:21)
at social.androiddev.common.utils.ImageLoadingKt$loadImageIntoPainter$1.invokeSuspend(Unknown Source:13)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@39a2b44, androidx.compose.runtime.BroadcastFrameClock@c6b542d, StandaloneCoroutine{Cancelling}@526bd62, AndroidUiDispatcher@afeaef3]
2022-11-25 07:57:49.864 1440-28746/? I/Dro
For MVP, let's support browsing your local timeline first only. This will keep the scope limited as supporting multiple timelines + viewing own/user's profile can be done in V2 which demands a more complex UI + navigation.
No response
This took me more than a while to reconcile with myself on, because when I see a bunch of top-level functions like this the first thing I think is that we're going to end up polluting our class-space very quickly.
Are there opinions on utilizing some kind of namespacing here?
object Spacers {
@Composable
fun XLarge(modifier: Modifier = Modifier) {} // ...
}
// Usage
Spacers.XLarge()
This has the upside of making it easier to find things. If I want a specific spacer I can do Spacers.
and get a nice list.
I can be convinced either way, just a random musing.
Originally posted by @exallium in #66 (comment)
Follow up https://github.com/AndroidDev-social/DodoForMastodon/pull/99/files#r1052314164
No response
Consider updating to AGP 7.3.x (latest stable)
androidMain
sources. Described here: https://issuetracker.google.com/issues/231701341. Though Issue: https://issuetracker.google.com/issues/229298359 for test sources will remain until AGP 7.4.xsdk
33 (Android 13)I should be able to make a PR once this has been agreed upon. Right now AGP 7.3.1 is the latest stable where most issues with KMP will be fixed with just https://issuetracker.google.com/issues/229298359 remaining
Since this will be at some point a topic in terms of testing and has some implications - are we going for mocks?
Currently, there 3 Frameworks (I know of):
Mockative -> not sure if this is still active
MocKMP
KMock -> my baby/you can play with it here
A few words to KMock - I am currently preparing my next iteration of, which will bring, aside from some dependencies updates, some new stuff. But I will need a bit time for that.
However, KMock is a bit different to mockk or Mockito if you are used to it, so I recommend trying it upfront. The big plus is no worries about the setup since the KMock's gradle plugin will do it. It is tightly tested so most limitation are known this far.
No response
currently it is a sealed class
No response
New users might not know what Mastodon or an instance is at all.
It would be nice to have some guidance, on where to find a suitable instance and how to sign up for a new account.
Implement functionality to allow existing users to log in
No response
Under Ground Rules, the rules mention Python users, Python community and PEPs. This is perhaps copy/pasted from another set of community rules? :)
If this is something you'd like to have fixed, I can work on it, if you tell me what the preferred designation is for this community. Perhaps just discuss it in this thread? :)
No response
Right now we have 2 jvm only impls. We need to find ios alternatively and make expect/actuals
No response
right now data is a layer that can get large, let's collapse into features
No response
We need to find a way to share string resources across the platforms, instead of hard coding them in code
No response
We should include some quick/small option in the timeline to log out and return to the root welcome screen
No response
We should have one. I usually just add the one you get from Insights -> Community Standards -> Code of conduct, but open to other suggestions.
No response
Could we have a section on the documentation on how to build the project for each target? I've not worked with KMP but I imagine there's some nuances between building for iOS vs Android vs other platforms
No response
It was requested in #mastodon-client slack channel for documentation regarding code style and coding conventions.
This is just an "issue" to track that and for anyone to offer any input.
As a starting point I suggest we just use the default kotlin style guide for now, unless anyone feels strongly and wants to create a custom one that follows certain guidelines and can be included in the project and imported in workspaces.
No response
When changing the pre-selected server androiddev.social
to something else, the oauth webview from [htt](https://androiddev.social/ is opened.
No response
Use Gradle Version Catalogs for dependency declarations.
This is a mandatory requirement on most mobile stores if I'm not wrong.
No response
There are many licenses out there, we should find a license where most of the contributors are happy with.
I may be too late to ask it, but does anyone know why it stopped at MVP? why is it not developed anymore or published?! It looks like a decent project.
Placeholder issue for adding fastlane scripts and github actions to run CI for tests, detekt, lint, and builds for distribution.
No response
for now, is just add a dummy TopAppBar to the root screen hierarchy when logged in, and add a settings icon that takes you to a new screen with a simple logout button. You'll need to also add logic for clearing/deleting the right user session data which may only be local, not sure yet. Plz feel free to create a GitHub issue with this info if there isn't one already
No response
Use the new Gradle typesafe project accessors when referencing modules
https://docs.gradle.org/current/userguide/declaring_dependencies.html
I'd love for us to think about swipe/multi-touch controls rather than lots of buttons. For example things like swipe left to boost or right to reply to a post. Ideally I can keep my thumb in middle of the screen and still perform most basic functions.
No response
Creation of Architecture Journey to help understand the app architecture: its layers, key classes and the interactions between them.
When talking about a product it is mandatory to have a proper name which can be remembered and linked to its functionality.
Like the community once came up with Boaty McBoatface we should be able to find some good names as well.
Let's first collect some ideas and later on we can start a poll for the decision.
No response
Set up Hilt (or Dagger) library for dependency injection
No response
https://detekt.dev/
https://pinterest.github.io/ktlint/
At some point it would be nice to get these setup in the project so developers can focus more on contributions and have these checkers as part of CI.
No response
Create a new profile screen for dodo client.
Currently there is no design for that. So please refer to other clients and come up with design and implement it.
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.