[Android] Flaming Durtles - Android app with offline support

What do you mean? That’s how it looks. If you mean the horns on the top right, it’s one of those kanji that’s valid either way, depends on the font and encoding.

https://moji.tekkai.com/zoom/噌/page.html
https://www.kanjipedia.jp/kanji/0004287200

1 Like

Aha! I did not realize there were two ways of writing it. Thank you.

https://en.wiktionary.org/wiki/曾#Translingual

Alternative forms

When used in Korea or as a Japanese kyūjitai character, the upper component is instead of , which is also the historical form found in the Kangxi dictionary.

1 Like

I remembered a discussion about this earlier this year, for more clarification

2 Likes

Thank you for making this great app @ejplugge, i’m using it every day!

Have you considered making is open source? As you know, there are numerous advantages you will gain from that. Just as a example - you said that you have been stressed by the many bugs that you tried to fix. If you make it open source other software developers, like me, will be able to do some of the work resulting in a better experience for you and for all users.

1 Like

I only receive notifications when I open the app. I have played around with the notification settings but the results have not changed. Not a big issue though. I’m just happy to have a functioning offline app. Thanks @ejplugge for all that you do.

THIS IS AMAZING AND YOU ARE A HARD-WORKING GENIUS!

There are no words to express how grateful I am for this.

I fell off the WK wagon for almost a year and was loathe to come back as I’d basically have to pick up from scratch again. Before leaving, I picked up a WK lifetime access I still wear with pride and I used a somewhat complex set of apps to somehow get an Anki like experience on my Android (being a father of twins, time is essential for me) which worked sometimes, but never well and never stable.

Now though? I have exactly what I need in a fantastic package. So thanks in large part to you, I just reset my account and will start from scratch once again.

I can’t thank you enough for this second chance :blush:

5 Likes

@ejplugge if a review is created in the past does its updated_at date reflect the actual date it was created and not the past date?

I have considered it, but there are a few reasons I’ve been hesitant so far. Not the least of which is that dealing with outside contributors makes the whole project very different from just running it as a solo project. And I don’t want to invite outside contributions until I feel up to handling that. But it’ll happen eventually anyway, if only as insurance so that the app doesn’t have to die if I lose interest in Japanese or I get hit by a bus. I’ve been ill the last week or so, hopefully I feel up to prepping a public source release over the holiday downtime.

If you get notifications while the app is open, then your notification settings are probably fine. What happens is, the app sets an alarm for once an hour at the top of the hour (approximately), and when that alarm is delivered, notifications are set in the background.

It sounds like something is preventing the alarm from being delivered to the app if you don’t have it open in the foreground. So I’d suggest looking at the settings for app background processing, chances are you have something set there that prevents it, likely set to conserve battery life or similar.

Yes. The created_at for the review is set to the timestamp you supply in the API request. The data_updated_at for the review, assignment, and review statistic are all set to the current time when you submit the request.

This is pretty essential to support the common sync pattern of “just give me anything that was created or updated since the last time I asked”.

3 Likes

Thanks! I wasn’t sure and the docs weren’t explicit about it. Am reworking the heatmap script and wanted to be sure it caught all offline reviews

Yeah, doing a conditional query on updated_after is sufficient for that. Although in FD I actually subtract an hour from that just to make sure I don’t miss anything because of clock skew on the device’s side or the API’s side. You may get dupes that way, but I’d rather deal with that than risking missing some data.

1 Like

Having had a chance to play with the app some more, I was wondering: would it be possible to add the ability to use swipes for easier navigation, e.g. between lessons or when browsing? It’d feel much more natural and comfortable, at least on my phone.

Or did you already implement that and I just overlooked it?

2 Likes

No, you didn’t. It’s been requested before and I tried to implement it, but it was a failure since different UI components were competing for touch events. It’s been on the list ever since, and now that I’m much more familiar with Android internals I want to pick this up again soon-ish.

3 Likes

could you also check how to make scrollable graphs?
like it is implementated for network usage in Android’s system setting app.
this one can help with extending time-line chart…

That’s trickier, but that’s also on the list.

it appears that there is one more place with this issue - session result.
to reproduce, do self-study of a whole level, then scroll down full list items in review of items - there is similar clipping.

Had something weird happen on chromebook this morning. For some reason I would do reviews and they wouldn’t sync. From the best I can tell, I never lost my internet connection. I did a handful of reviews and then noticed none of them would sync. So I did 5 again and even though I had an end score, the result wasn’t syncing (verified with wanikani and FD on my phone). Then out of nowhere it synced a portion of them. I did what was left but they wouldn’t sync. I did the remaining 5 on my phone any they synced fine.
I uploaded the debug log if thats helpful .

Fun addition: I rebooted chrome OS and opened FD and it asked if I wanted to resume my session (even though I wasn’t in a session when I rebooted). I abandoned it and it synced properly. I wonder if a self-study quiz managed to hang in the background…? or if a review didn’t sync right and then tanked the rest of the reviews.

I finally did get a new phone! The app’s so fast (as well as every other app)! :joy:

2 Likes

I’ll fix it.

Thanks for the log, that was useful. Something very weird happens, but as far as I can tell it’s not a bug in the app.

Without going into too much detail, there is an Android platform component I use to make sure that database updates and API calls are properly handled in the background. It’s called the JobIntentService. What happened to you is that one of the JobIntentServices just stopped working. Normally this is never a problem since Android will restart it as needed whenever work for it comes in, but in your situation that just didn’t happen. It didn’t get stuck as far as I can tell, it just quietly went away.

I’ve never seen this happen on Android, but maybe it’s a Chromebook problem. When you run Android apps on ChromeOS, you’re not actually running a full Android, you’re basically just running a compatibility layer that looks just like Android to an app. Maybe that layer is buggy. It certainly was buggy in the early days of Android apps on ChromeOS. It’s gotten a lot better, but maybe this is a bug that’s still left over.

Either way, it’s not something I can fix - it’s basically a weird kind of crash. If it happens again, force-quitting the app (however that is done on ChromeOS) should ‘unstick’ the service, or worst case a reboot. But I’m hoping this was a one-time thing.

3 Likes

Thanks!!! I’ll remember that. There’s been a few buggy things that have happened with Android apps so that’s not entirely a surprise