-
1 February 2021Last Friday's Update : When Users Sail Away. And a Fix
Account Delete functionality
Last Friday the site was updated with the functionality to permanently delete an account. As I noted in the New Year roadmap:
most sites these days let you delete your account at the click of a button. For a long time I was able to handle these requests via the contact form, but I have been lagging behind lately and it's admittedly not what I would expect myself from other websites/apps.
The delete account option is found at the bottom of the "Edit Account" page. Personally I always feel a bit nervous when I see this sort of options. :) Let me reassure you even if you mistakenly tap that button on your laptop while scrolling the page or whatnot, it will take you to a second step with a form. The form requires your current email, a short phrase as well to confirm your current password (see picture).
This closes Github Issue #87 Add "Delete Account" option somewhere in Account Settings. The issue was created by yours truly in March 2017... humbling.
Also completes one of the three main items for Phase 1 of the New Year roadmap (blog post).
Stories also sail away...
Stories and flashcards are immediately deleted... which isn't great. Sites like StackOverflow have a way of converting a user's public contribution (the questions & answers) into some kind of a "community wiki". Kanji Koohii doesn't have such a system in place. It would be really complicated for me as well to code it on the legacy code base (ie. prior to the announced Laravel migration).
Therefore when a user deletes their account, all the shared stories on this account also immediately get deleted. Those stories (and their usernames) may still show for up to thirty days because of the cached templates, but as soon as those templates get refreshed they are gone. That also includes all the votes and reports associated with those stories.
I'm not sure this is what users would expect. Likely that users who shared many stories, especially those that accrued many stars, don't expect their public stories to also get deleted. They may want to only delete their personal info (username, email, ...) and perosnal stories, while retaining their shared contributions.
Ideally I'd have a checkbox on the account deletion confirmation page, for users to confirm whether they want to also delete the shared stories. Shared stories could be "orphaned" from the original author, but I don't have a simple solution right now. To be honest I just want to move on with the Laravel migration but if someone can think of a relatively simple and better way to handle this, suggestions are welcome.
With that said in practice this isn't a big issue because the vast majority of account deletion requests are either recent users who simply wanted to check out the site and it wasn't exactly what they are looking for, as well as people who registered years ago and I am guessing like to clean up their tracks and delete old unused accounts.
Who's Reviewing? Broken Edition
In the recent update I also introduced a typo that broke the Who's Reviewing page. Thanks again to Roderick for letting me know! It was a simple typo introduced while refactoring some CSS. A class name output in a bit of JSON. I thought I was smart back then with my JSON data in a php method, but that bit of JSON does not get any syntax checking in the code editor. Sigh. Also I didn't know about short array syntax in php back then which is why I resorted to JSON to return a configuration object in a less verbose and unsightly syntax.
This particular code is almost as old as the site which is why the component is internally called "MembersList": indeed the early "Reviewing the Kanji" website's main feature was the spaced repetition system with the builtin RTK flashcards. The stories area was in fact added later (a heavily requested feature ;)).
This got me thinking. The "Who's Reviewing" page is one of the few places of the site that gives a bit of a community feel. I realized this page may be one of the simplest and early features I could write on the new Laravel stack : with Laravel Jetstream I should be able to add user's custom avatars to the list (cf. profile management). I think this will make the page more lively and add a bit more personality to user's public profile.
Next
Having completed one of the three main items of Phase 1, I will now move onto either the "Finish Typescript API refactor", or Issue #184 Add "Again" button in Review page. I should probably start with the Javascript refactor to refresh myself on some Javascript patterns since I'll need to edit quite a bit of Javascript for the Flashcard Review page.
I'm actually one week behind the schedule I planned on my little Gantt chart ... but to be fair I had to refresh myself on a bunch of things like handling MySQL imports/exports in the docker container, fix some issue with the Bash prompt, install and configure some php extensions, etc.
By Month
- Oct 2024 (1)
- Sep 2024 (1)
- Jun 2024 (2)
- May 2024 (4)
- Apr 2024 (3)
- Mar 2024 (1)
- Feb 2024 (1)
- Dec 2023 (1)
- Nov 2023 (2)
- Oct 2023 (2)
- Apr 2023 (2)
- Mar 2023 (2)
- Feb 2023 (1)
- Jan 2023 (2)
- Dec 2022 (1)
- Nov 2022 (2)
- Oct 2022 (3)
- Sep 2022 (1)
- May 2022 (4)
- Apr 2022 (1)
- Feb 2022 (2)
- Jan 2022 (2)
- Dec 2021 (4)
- Nov 2021 (2)
- Oct 2021 (2)
- Sep 2021 (2)
- Aug 2021 (1)
- Apr 2021 (2)
- Feb 2021 (3)
- Jan 2021 (3)
- Dec 2020 (1)
- Nov 2020 (1)
- May 2020 (1)
- Apr 2020 (1)
- Jan 2020 (1)
- Oct 2019 (1)
- Sep 2019 (1)
- Aug 2019 (4)
- Jul 2019 (3)
- Jun 2019 (1)
- May 2019 (1)
- Mar 2019 (2)
- Jan 2019 (1)
- Nov 2018 (3)
- Oct 2018 (8)
- Sep 2018 (4)
- Aug 2018 (3)
- Jul 2018 (1)
- Jun 2018 (4)
- May 2018 (1)
- Apr 2018 (1)
- Mar 2018 (1)
- Jan 2018 (1)
- Dec 2017 (6)
- Nov 2017 (4)
- Oct 2017 (4)
- Sep 2017 (5)
- Aug 2017 (5)
- Jun 2017 (3)
- May 2017 (2)
- Apr 2017 (3)
- Mar 2017 (7)
- Feb 2017 (10)
- Jan 2017 (11)
- Dec 2016 (6)
- Nov 2016 (5)
- Oct 2016 (6)
- Sep 2016 (7)
- Aug 2016 (3)
- May 2016 (1)
- Mar 2016 (2)
- Jan 2016 (1)
- Dec 2015 (3)
- Nov 2015 (1)
- Oct 2015 (1)
- Sep 2015 (7)
- Jul 2015 (2)
- Jun 2015 (1)
- May 2015 (5)
- Apr 2015 (4)
- Mar 2015 (5)
- Feb 2015 (4)
- Jan 2015 (5)
- Dec 2014 (4)
- Nov 2014 (3)
- Oct 2014 (2)
- Jun 2014 (1)
- Apr 2014 (2)
- Mar 2014 (4)
- Feb 2014 (3)
- Jan 2014 (4)
- Dec 2013 (2)
- Oct 2013 (1)
- Sep 2013 (1)
- Jun 2013 (4)
- May 2013 (1)
- Mar 2013 (1)
- Jan 2013 (2)
- Oct 2012 (2)
- Aug 2012 (1)
- Jul 2012 (2)
- Jun 2012 (2)
- May 2012 (1)
- Mar 2012 (2)
- May 2011 (1)
- Apr 2011 (4)
- Mar 2011 (3)
- Feb 2011 (2)
- Jan 2011 (2)
- Dec 2010 (8)
- Nov 2010 (8)
- Oct 2010 (3)
- Sep 2010 (3)
- Aug 2010 (1)
- Jul 2010 (2)
- Jun 2010 (5)
- May 2010 (1)
- Apr 2010 (3)
- Mar 2010 (4)
- Feb 2010 (2)
- Jan 2010 (1)
- Dec 2009 (5)
- Nov 2009 (5)
- Oct 2009 (1)
- Aug 2009 (1)
- May 2009 (5)
- Apr 2009 (2)
- Mar 2009 (1)
- Feb 2009 (2)
- Jan 2009 (2)
- Nov 2008 (1)
- Oct 2008 (1)
- Sep 2008 (1)
- May 2008 (2)
- Apr 2008 (1)
- Feb 2008 (6)
- Jan 2008 (5)
- Dec 2007 (6)
- Oct 2007 (1)
- Sep 2007 (2)
- Aug 2007 (3)
- Jun 2007 (1)
- May 2007 (5)
- Apr 2007 (1)
- Mar 2007 (2)
- Feb 2007 (1)
- Jan 2007 (4)
- Dec 2006 (3)
- Aug 2006 (1)
- Jun 2006 (3)
- Apr 2006 (6)
- Mar 2006 (8)
- Feb 2006 (1)
- Jan 2006 (4)
- Nov 2005 (1)
- Oct 2005 (4)
- Sep 2005 (1)
- Aug 2005 (11)