|
|
(19 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| == Adding moderation tool in Tokodon ==
| |
|
| |
|
| This project aims to enhance the functionality of Tokodon by integrating moderation tools which will allow moderators and administrators of Mastodon instances to efficiently manage their communities through the easy-to-use interface of Tokodon. This project aims to provide Mastodon instance owners with a comprehensive suite of admin tools, making Tokodon a more versatile and usable tool for the fediverse moderators.
| |
|
| |
| == Mentor ==
| |
|
| |
| Carl Schwan
| |
|
| |
| == Merge Request ==
| |
| * [https://invent.kde.org/network/tokodon/-/merge_requests/295 Add Federation Tool].
| |
| * [https://invent.kde.org/network/tokodon/-/merge_requests/277 Add Report Moderation Tool].
| |
| * [https://invent.kde.org/network/tokodon/-/merge_requests/280 Implement correct logic for Last Used Value ].
| |
| * [https://invent.kde.org/network/tokodon/-/merge_requests/256 Add Account Moderation Tool ].
| |
| * [https://invent.kde.org/network/tokodon/-/merge_requests/227 Display moderation tool icon when account with admin permissions logs in ].
| |
|
| |
| == Blog Posts ==
| |
|
| |
| * [https://k3yss.github.io/posts/gsoc_blog1/ Google Summer of Code Introductory Blog #1]
| |
| * [https://k3yss.github.io/posts/gsoc_blog2/ GSoC-23 Community Bonding Period Blog #2]
| |
| * [https://k3yss.github.io/posts/gsoc_blog3/ GSoC-23 Week 1-2 | Adding Account Moderation Tool #3]
| |
| * [https://k3yss.github.io/posts/gsoc_blog4/ GSoC-23 Week 3-4 | Finalizing Account Moderation tool & Adding Report Moderation Tool #4]
| |
|
| |
| == Timeline ==
| |
|
| |
| === Week 1 and Week 2 ===
| |
|
| |
| The first task I worked on was implementing the account moderation tool. This tool enables moderators/admins of an instance to view all the accounts available on the server and take action against them.
| |
|
| |
| Initially, when attempting to receive raw ''JSON'' data from the ''/api/v1/admin/accounts'' endpoint, I encountered a ''403'' error response. Upon spending some time debugging my code I couldn’t determine what I was doing wrong and so I finally resorted to asking for help in the Tokodon matrix chat, where redstrate❣️ helped me identify that we didn’t have the necessary scope set in Tokodon to access admin endpoints.
| |
|
| |
| [[File:AccountToolInitialPage.png|thumb|alt=An image showing User Interface of Tokodon’s Account Moderation Tool|Images showing implemented Account Moderation tool]]
| |
|
| |
| I decided to implement a ''QAbstractListModel'' to expose all the data and required properties in the ''QML'' UI. With this in mind, I created a new class ''AccountsToolModel'' that inherited from ''QAbstractListModel''. For making all the filter options functional I created ''QProperty'' instances with the necessary ''READ'', ''WRITE'' and ''NOTIFY'' methods.
| |
|
| |
| To display the admin-related information for an account, I parsed the received JSON data and created a new method AbstractAccount::adminIdentityLookup which will populate QProperty instances of AdminAccountInfo to store all the required information for the moderation tool. Once all the cpp backend was ready, I started with the qml implementation, figuring out the best way in which the data can be presented.
| |
|
| |
| Once the UI was implemented, I encountered an issue with pagination not functioning correctly. After debugging the issue, I discovered that when requesting a response for the next page using the v2 endpoint, the response received was actually v1. This discrepancy messed up the query parameters and rendered pagination impossible. To address this issue, I implemented a simple code block: url = url.toString().replace("/v1/", "/v2/");. This replacement fixed the problem and allowed proper pagination to occur.
| |
|
| |
| === Week 3 and Week 4 ===
| |
|
| |
|
| |
| In my previous blog post, I mentioned that I had worked on implementing the initial page of the Account Moderation Tool in the first two weeks. This week, I began implementing the MainAccountToolPage.qml which serves as the main page of the tool where moderators can view admin-level details and take actions against an account.
| |
|
| |
| === Week 5 and Week 6 ===
| |
|
| |
| === Week 7 and Week 8 ===
| |
|
| |
| === Week 9 and Week 10 ===
| |
|
| |
| === Week 11 and Week 12 ===
| |
|
| |
| == Contact ==
| |
|
| |
| I am on Matrix as @k3ys:matrix.org.
| |