Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Commit

Permalink
Added a button for discord texts
Browse files Browse the repository at this point in the history
Added a discord text config file
Added star distance to reddit config
Added settings button to open discord config
  • Loading branch information
Fi0x committed Sep 10, 2021
1 parent f02e59c commit 083fb43
Show file tree
Hide file tree
Showing 13 changed files with 333 additions and 52 deletions.
6 changes: 6 additions & 0 deletions src/main/java/com/fi0x/edct/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.fi0x.edct.logging.Logger;
import com.fi0x.edct.logging.MixpanelHandler;
import com.fi0x.edct.logic.filesystem.BlacklistHandler;
import com.fi0x.edct.logic.filesystem.DiscordHandler;
import com.fi0x.edct.logic.filesystem.RedditHandler;
import com.fi0x.edct.logic.filesystem.SettingsHandler;
import com.fi0x.edct.logic.threads.DistanceHandler;
Expand Down Expand Up @@ -34,6 +35,7 @@ public class Main
public static File settings;
public static File blacklist;
public static File reddit;
public static File discord;
//TODO: Update version information
public static final String version = "1.6.9.7";//All.GUI.Logic.Hotfix
public static final boolean portable = false;
Expand Down Expand Up @@ -112,6 +114,10 @@ private static void setupLocalFiles()
reddit = new File(localStorage.getPath() + File.separator + "reddit.json");
createFileIfNotExists(reddit, true);
RedditHandler.fillRedditFileIfEmpty();

discord = new File(localStorage.getPath() + File.separator + "discord.json");
createFileIfNotExists(discord, true);
DiscordHandler.fillDiscordFileIfEmpty();
}

private static boolean createFileIfNotExists(File file, boolean isFile)
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/com/fi0x/edct/gui/controller/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public class Settings implements Initializable
private TextField txtUnloadingTonProfit;
@FXML
private Tooltip ttReddit;
@FXML
private Tooltip ttDiscord;

@Override
public void initialize(URL url, ResourceBundle resourceBundle)
Expand Down Expand Up @@ -148,6 +150,7 @@ public void initialize(URL url, ResourceBundle resourceBundle)
btnDetails.setText(detailedResults.name() + " Results");

ttReddit.setText("This opens the config file for reddit-texts in the Windows-editor.\nYou can find out how to configure the file correctly in the wiki");
ttDiscord.setText("This opens the config file for discord-texts in the Windows-editor.\nYou can find out how to configure the file correctly in the wiki");
}

@FXML
Expand Down Expand Up @@ -196,6 +199,11 @@ private void openRedditConfig()
{
ExternalProgram.openNotepad(Main.reddit);
}
@FXML
private void openDiscordConfig()
{
ExternalProgram.openNotepad(Main.discord);
}

public static void loadSettings()
{
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/fi0x/edct/gui/controller/Station.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ public class Station implements Initializable
@FXML
private Label lblAge;
@FXML
private Button btnDiscord;
@FXML
private Tooltip ttDiscord;
@FXML
private Button btnReddit;
@FXML
private Tooltip ttReddit;
Expand Down Expand Up @@ -79,8 +83,22 @@ public void initialize(URL url, ResourceBundle resourceBundle)

ExternalProgram.copyToClipboard(text);
});
btnDiscord.addEventHandler(MouseEvent.MOUSE_CLICKED, e ->
{
TRADE station = isBuying ? resultsController.getCurrentBuyStation() : resultsController.getCurrentSellStation();
String text = ConvertToString.discordText(resultsController, station, isBuying);

if(text == null)
{
Logger.ERROR(992, "Something went wrong when creating a discord String");
return;
}

ExternalProgram.copyToClipboard(text);
});

ttReddit.setText("Left click here to copy a title for your reddit post.\nRight click here to copy a text for your reddit post");
ttDiscord.setText("Click here to copy a text that you can publish on discord");
}

@FXML
Expand Down Expand Up @@ -183,6 +201,9 @@ public void setDetailsVisibility(Settings.Details detailLevel)

btnReddit.setVisible(advanced);
btnReddit.setManaged(advanced);

btnDiscord.setVisible(advanced);
btnDiscord.setManaged(advanced);
}

public void setResultsController(Results controller, boolean isBuying)
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/com/fi0x/edct/logic/filesystem/ConfigHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.fi0x.edct.logic.filesystem;

import org.json.simple.JSONObject;

import javax.annotation.Nullable;

public class ConfigHandler
{
public static String getValue(JSONObject json, String key, boolean unloading, @Nullable String type)
{
JSONObject keyArea = null;
if(json.containsKey("Required Variables") && ((JSONObject) json.get("Required Variables")).containsKey(key))
{
keyArea = (JSONObject) json.get("Required Variables");
} else if(json.containsKey("Custom Variables") && ((JSONObject) json.get("Custom Variables")).containsKey(key))
{
keyArea = (JSONObject) json.get("Custom Variables");
}
if(keyArea == null) return "";

String value = keyArea.get(key).toString();
if(value.charAt(0) != '{') return value;

JSONObject keyJson = (JSONObject) keyArea.get(key);
if(keyJson.containsKey(unloading ? "UNLOADING" : "LOADING"))
{
if(type == null) return keyJson.get(unloading ? "UNLOADING" : "LOADING").toString();
else
{
JSONObject loadingJson = (JSONObject) keyJson.get(unloading ? "UNLOADING" : "LOADING");
if(loadingJson.containsKey(type)) return loadingJson.get(type).toString();
}
} else return keyJson.toString();

return "";
}
}
70 changes: 70 additions & 0 deletions src/main/java/com/fi0x/edct/logic/filesystem/DiscordHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.fi0x.edct.logic.filesystem;

import com.fi0x.edct.Main;
import com.fi0x.edct.logging.Logger;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import javax.annotation.Nullable;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class DiscordHandler
{
public static void addMissingKeys(JSONObject json)
{
try
{
var jsonInput = Main.class.getResourceAsStream("/defaults/discord.json");
JSONObject originalJson = (JSONObject) new JSONParser().parse(jsonInput.toString());
for(Object o : originalJson.keySet())
{
String key = o.toString();
if(!json.containsKey(key)) json.put(key, originalJson.get(key));
}
} catch(ParseException ignored)
{
}
}

@Nullable
public static JSONObject getDiscordConfig()
{
JSONObject json = null;
try
{
String fileContent = Files.readString(Main.discord.toPath());
json = (JSONObject) new JSONParser().parse(fileContent);
} catch(IOException | ParseException ignored)
{
}

return json;
}

public static void fillDiscordFileIfEmpty()
{
try
{
List<String> fileContent = new ArrayList<>(Files.readAllLines(Main.discord.toPath(), StandardCharsets.UTF_8));

if(fileContent.size() <= 0)
{
var jsonInput = Main.class.getResourceAsStream("/defaults/discord.json");
fileContent = new BufferedReader(new InputStreamReader(jsonInput, StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
}

Files.write(Main.discord.toPath(), fileContent, StandardCharsets.UTF_8);
} catch(IOException e)
{
Logger.WARNING(996, "Could not write default entry to discord config", e);
}
}
}
29 changes: 0 additions & 29 deletions src/main/java/com/fi0x/edct/logic/filesystem/RedditHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,35 +49,6 @@ public static JSONObject getRedditConfig()
return json;
}

public static String getValue(JSONObject json, String key, boolean unloading, @Nullable String type)
{
JSONObject keyArea = null;
if(json.containsKey("Required Variables") && ((JSONObject) json.get("Required Variables")).containsKey(key))
{
keyArea = (JSONObject) json.get("Required Variables");
} else if(json.containsKey("Custom Variables") && ((JSONObject) json.get("Custom Variables")).containsKey(key))
{
keyArea = (JSONObject) json.get("Custom Variables");
}
if(keyArea == null) return "";

String value = keyArea.get(key).toString();
if(value.charAt(0) != '{') return value;

JSONObject keyJson = (JSONObject) keyArea.get(key);
if(keyJson.containsKey(unloading ? "UNLOADING" : "LOADING"))
{
if(type == null) return keyJson.get(unloading ? "UNLOADING" : "LOADING").toString();
else
{
JSONObject loadingJson = (JSONObject) keyJson.get(unloading ? "UNLOADING" : "LOADING");
if(loadingJson.containsKey(type)) return loadingJson.get(type).toString();
}
} else return keyJson.toString();

return "";
}

public static void fillRedditFileIfEmpty()
{
try
Expand Down
61 changes: 43 additions & 18 deletions src/main/java/com/fi0x/edct/logic/helper/ConvertToString.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.fi0x.edct.gui.controller.Filters;
import com.fi0x.edct.gui.controller.Results;
import com.fi0x.edct.gui.controller.Settings;
import com.fi0x.edct.logic.filesystem.ConfigHandler;
import com.fi0x.edct.logic.filesystem.DiscordHandler;
import com.fi0x.edct.logic.filesystem.RedditHandler;
import com.fi0x.edct.logic.structures.TRADE;
import org.json.simple.JSONObject;
Expand Down Expand Up @@ -60,8 +62,26 @@ public static String redditContent(Results results, TRADE station, boolean unloa

return content.toString();
}
@Nullable
public static String discordText(Results results, TRADE station, boolean unloading)
{
JSONObject discordConfig = DiscordHandler.getDiscordConfig();
if(discordConfig == null) return null;
DiscordHandler.addMissingKeys(discordConfig);

StringBuilder content = new StringBuilder();

private static String transformAndAddKey(String key, JSONObject redditConfig, Results results, TRADE station, boolean unloading)
String contentConfig = discordConfig.get("Text Structure").toString();
String[] contentParts = contentConfig.split(" ");
for(String part : contentParts)
{
content.append(transformAndAddKey(part, discordConfig, results, station, unloading));
}

return content.toString();
}

private static String transformAndAddKey(String key, JSONObject config, Results results, TRADE station, boolean unloading)
{
boolean prefix = key.charAt(0) == '+';
boolean suffix = key.charAt(key.length() - 1) == '+';
Expand All @@ -73,51 +93,56 @@ private static String transformAndAddKey(String key, JSONObject redditConfig, Re
part.append(System.lineSeparator());
break;
case "COMMODITY":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "COMMODITY", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "COMMODITY", unloading, "PREFIX"));
part.append(results.getCurrentTrade().NAME);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "COMMODITY", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "COMMODITY", unloading, "SUFFIX"));
break;
case "PROFIT":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "PROFIT", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "PROFIT", unloading, "PREFIX"));
if(unloading) part.append(Settings.unloadingTonProfit / 1000).append("k");
else part.append(Settings.loadingTonProfit / 1000).append("k");
if(suffix) part.append(RedditHandler.getValue(redditConfig, "PROFIT", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "PROFIT", unloading, "SUFFIX"));
break;
case "PAD":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "PAD", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "PAD", unloading, "PREFIX"));
part.append(station.STATION.PAD);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "PAD", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "PAD", unloading, "SUFFIX"));
break;
case "STAR_DISTANCE":
if(prefix) part.append(ConfigHandler.getValue(config, "STAR_DISTANCE", unloading, "PREFIX"));
part.append(station.STATION.DISTANCE_TO_STAR);
if(suffix) part.append(ConfigHandler.getValue(config, "STAR_DISTANCE", unloading, "SUFFIX"));
break;
case "QUANTITY":
assert Filters.getInstance() != null;
if(prefix) part.append(RedditHandler.getValue(redditConfig, "QUANTITY", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "QUANTITY", unloading, "PREFIX"));
part.append(Integer.parseInt(Filters.getInstance().txtQuantity.getText()) / 1000).append("k");
if(suffix) part.append(RedditHandler.getValue(redditConfig, "QUANTITY", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "QUANTITY", unloading, "SUFFIX"));
break;
case "STATION":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "STATION", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "STATION", unloading, "PREFIX"));
part.append(station.STATION.NAME);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "STATION", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "STATION", unloading, "SUFFIX"));
break;
case "SYSTEM":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "SYSTEM", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "SYSTEM", unloading, "PREFIX"));
part.append(station.STATION.SYSTEM);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "SYSTEM", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "SYSTEM", unloading, "SUFFIX"));
break;
case "STATION_PRICE":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "STATION_PRICE", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "STATION_PRICE", unloading, "PREFIX"));
if(unloading) part.append(station.BUY_PRICE);
else part.append(station.SELL_PRICE);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "STATION_PRICE", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "STATION_PRICE", unloading, "SUFFIX"));
break;
case "CARRIER_PRICE":
if(prefix) part.append(RedditHandler.getValue(redditConfig, "CARRIER_PRICE", unloading, "PREFIX"));
if(prefix) part.append(ConfigHandler.getValue(config, "CARRIER_PRICE", unloading, "PREFIX"));
if(unloading) part.append(Details.carrierSell);
else part.append(Details.carrierBuy);
if(suffix) part.append(RedditHandler.getValue(redditConfig, "CARRIER_PRICE", unloading, "SUFFIX"));
if(suffix) part.append(ConfigHandler.getValue(config, "CARRIER_PRICE", unloading, "SUFFIX"));
break;
default:
part.append(RedditHandler.getValue(redditConfig, key.replace("+", "").toUpperCase(Locale.ROOT), unloading, null));
part.append(ConfigHandler.getValue(config, key.replace("+", "").toUpperCase(Locale.ROOT), unloading, null));
break;
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/fi0x/edct/logic/threads/EDDNHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ private void retrieveStationInterrupted(String outputString)
stationtype = EDDNCleanup.getStationType(html);
starDistance = EDDNCleanup.getStarDistance(html);

if(stationtype == null || padsize == null || starDistance < 0)
if(stationtype == null || padsize == null)
{
Platform.runLater(() -> MainWindow.getInstance().interactionController.storageController.setEDDNStatus(false));
Logger.WARNING("Aborted station update for " + stationName + " type=" + stationtype + " pad=" + padsize + " starDistance=" + starDistance + " - html: " + html);
Expand Down
10 changes: 9 additions & 1 deletion src/main/resources/css/station.css
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@
-fx-padding: 0 5 0 5;
}
#btnReddit:hover {
-fx-text-fill: #ffffff;
-fx-text-fill: #000000;
-fx-background-color: #ff5700;
}
#btnDiscord {
-fx-text-fill: #ffffff;
-fx-background-color: #202225;
-fx-padding: 0 5 0 5;
}
#btnDiscord:hover {
-fx-background-color: #36393f;
}
Loading

0 comments on commit 083fb43

Please sign in to comment.