Skip to content

Conversation

JoshuaALawrence
Copy link

Hello, this plugin checks your items in your inventory/bank/collection logs/drops and will add/remove that item from your party on my self-hosted (self-made) 'Group Ironman Tracker'. This helps my team keep track of who already owns which items. I've attached images of the website.

The settings require the user to add the host, api key and check which boxes they want to sync; nothing goes to a server unless they directly add the location.

481329059-aae84ba3-ab34-432c-a686-ca1bfd5a561a 481329053-bc9bb9da-eefd-4618-b082-cbab456f868b 481329036-5febc5ac-78bc-45a5-95e3-ce9a0ed4aae6 481329063-e8ecb6f4-420d-4e5f-ae06-5d1fbd3bd359

@runelite-github-app
Copy link

@runelite-github-app
Copy link

This plugin requires a review from a Plugin Hub maintainer. The reviewer will request any additional changes if needed.


Internal use only: Reviewer details Maintainer details

@Septem151
Copy link
Contributor

You can @Inject both a Gson and an OkHttpClient instance instead of creating your own or parsing JSON manually without Gson:

public class GimTrackerApiClient {
    private final OkHttpClient httpClient;
    private final Gson gson;

...

    @Inject
    public GimTrackerApiClient(OkHttpClient httpClient, Gson gson) {
        this.httpClient = httpClient;
        this.gson = gson;
    }

...

}

Copy link
Member

@aHooder aHooder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should use the build.gradle found in the example repo with minimal modification to make review easier. E.g. remove this and this. It's easiest if it's nearly identical.

You should delete this file, just in case it can interfere with RuneLite's build process. Additionally, your gradle folder doesn't actually contain a wrapper jar (not that it needs to), and the wrapper folder in your project root is non-standard as well (should be deleted).

You should be injecting OkHttpClient and using that instead of creating a HttpClient here.

You should change your code to make it as easy as possible to keep track of which URL your plugin is making HTTP calls to at all times. Currently it's a little bit harder to follow than it has to be, since your hostUrl is updated via this public updateConfig method here, which could be called from anywhere with any input. This isn't that hard to track, but anything to ease review is a plus. Perhaps you could move the updateApiClientConfig function to the GimTrackerApiClient class, and inject the config there and access it directly?

If this list of template items is large, it might not be a good idea to store this in a config here.

Regarding your comment here, you're free to use Gson by injecting an instance of it. If you need to alter the options, use gson.newBuilder(). This is already part of RuneLite's dependencies, and would clean up your serialization & deserialization code a bit.

After resolving these issues, you'll have to wait for a maintainer to review the plugin.

@aHooder aHooder added the waiting for author waiting for the pr author to make changes or respond to questions label Aug 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
plugin added waiting for author waiting for the pr author to make changes or respond to questions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants