Skip to content
This repository was archived by the owner on Dec 6, 2025. It is now read-only.

Commit abb71ae

Browse files
committed
updated to remove summer seed notifs and add og seeds, added gear stock
1 parent fd5ed10 commit abb71ae

File tree

8 files changed

+372
-290
lines changed

8 files changed

+372
-290
lines changed

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ This is an app I made to check stock for grow a garden. it uses an ~~[API](https
44
## Checklist
55
- [x] ~~find a better api~~
66
- [x] ~~add notifications~~
7-
- [ ] get gears to work
7+
- [x] ~~get gears to work~~
88
- [ ] get eggs to work
99
- [x] ~~switch from api to websocket~~
1010
- [x] ~~make the user join a dc server~~
11+
- [ ] add notifs for the separate things (gears, seeds, eggs)
1112
(its the service i use, they added a requirement to send the discord user id)

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ android {
1111
minSdk = 26
1212
targetSdk = 35
1313
versionCode = 1
14-
versionName = "1.0"
14+
versionName = "1.2.0"
1515

1616
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
1717
}

app/src/main/java/com/unixity/gagstock/MainActivity.java

Lines changed: 101 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.HashMap;
4141
import java.util.List;
4242
import java.util.Map;
43+
import java.util.Objects;
4344

4445
import com.bumptech.glide.Glide;
4546

@@ -52,6 +53,8 @@ public class MainActivity extends AppCompatActivity {
5253
private ScrollView scrollContainer;
5354
private TextView loading;
5455
private SharedPreferences prefs;
56+
private LinearLayout gearContent;
57+
private ScrollView gearContainer;
5558

5659
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
5760
@SuppressLint("SetTextI18n")
@@ -82,6 +85,8 @@ protected void onCreate(Bundle savedInstanceState) {
8285
}
8386
scrollContent = findViewById(R.id.scrollContent);
8487
scrollContainer = findViewById(R.id.scrollContainer);
88+
gearContent = findViewById(R.id.gearContent);
89+
gearContainer = findViewById(R.id.gearContainer);
8590
loading = findViewById(R.id.loading);
8691
Button btn1 = findViewById(R.id.btn1);
8792
Button btn2 = findViewById(R.id.btn2);
@@ -90,17 +95,13 @@ protected void onCreate(Bundle savedInstanceState) {
9095
Button btn5 = findViewById(R.id.btn5);
9196

9297
btn1.setOnClickListener(v -> {
93-
scrollContent.removeAllViews();
98+
gearContainer.setVisibility(View.GONE);
9499
scrollContainer.setVisibility(View.VISIBLE);
95-
loading.setVisibility(ViewPager2.VISIBLE);
96-
loading.setText(R.string.load);
97-
fetchAndDisplaySeeds();
98100
});
99101

100102
btn2.setOnClickListener(v -> {
101103
scrollContainer.setVisibility(View.GONE);
102-
loading.setText("Gears Coming soon");
103-
loading.setVisibility(View.VISIBLE);
104+
gearContainer.setVisibility(View.VISIBLE);
104105
});
105106

106107
btn3.setOnClickListener(v -> {
@@ -142,7 +143,8 @@ private void fetchAndDisplaySeeds() {
142143
// String infoUrl = "https://growagardenapi.vercel.app/api/item-info";
143144
loading.setText(R.string.load);
144145
// RequestQueue queue = Volley.newRequestQueue(this);
145-
List<String> seedOrder = getStrings();
146+
List<String> seedOrder = getStrings("seed");
147+
List<String> gearOrder = getStrings("gear");
146148
// JsonArrayRequest infoRequest = new JsonArrayRequest(Request.Method.GET, infoUrl, null,
147149
// infoResponse -> {
148150
// try {
@@ -174,33 +176,58 @@ private void fetchAndDisplaySeeds() {
174176
// },
175177
// error -> Log.e("INFO_API", "Failed to load item info", error)
176178
// );
177-
connectToEndpoint(seedOrder);
179+
connectToEndpoint(seedOrder, gearOrder);
178180
// queue.add(infoRequest);
179181
}
180182

181183
@NonNull
182-
private static List<String> getStrings() {
183-
List<String> seedOrder = new ArrayList<>();
184-
seedOrder.add("Carrot");
185-
seedOrder.add("Strawberry");
186-
seedOrder.add("Blueberry");
187-
seedOrder.add("Tomato");
188-
seedOrder.add("Cauliflower");
189-
seedOrder.add("Watermelon");
190-
seedOrder.add("Green Apple");
191-
seedOrder.add("Avocado");
192-
seedOrder.add("Banana");
193-
seedOrder.add("Pineapple");
194-
seedOrder.add("Kiwi");
195-
seedOrder.add("Bell Pepper");
196-
seedOrder.add("Prickly Pear");
197-
seedOrder.add("Loquat");
198-
seedOrder.add("Feijoa");
199-
seedOrder.add("Sugar Apple");
200-
return seedOrder;
184+
private static List<String> getStrings(String type) {
185+
List<String> order = new ArrayList<>();
186+
if (Objects.equals(type, "seed")) {
187+
order.add("Carrot");
188+
order.add("Strawberry");
189+
order.add("Blueberry");
190+
order.add("Orange Tulip");
191+
order.add("Tomato");
192+
order.add("Daffodil");
193+
order.add("Watermelon");
194+
order.add("Pumpkin");
195+
order.add("Apple");
196+
order.add("Bamboo");
197+
order.add("Coconut");
198+
order.add("Cactus");
199+
order.add("Dragon Fruit");
200+
order.add("Mango");
201+
order.add("Grape");
202+
order.add("Mushroom");
203+
order.add("Pepper");
204+
order.add("Cacao");
205+
order.add("Beanstalk");
206+
order.add("Ember Lily");
207+
order.add("Sugar Apple");
208+
order.add("Burning Bud");
209+
return order;
210+
} else if (Objects.equals(type, "gear")) {
211+
order.add("Watering Can");
212+
order.add("Trowel");
213+
order.add("Recall Wrench");
214+
order.add("Basic Sprinkler");
215+
order.add("Advanced Sprinkler");
216+
order.add("Godly Sprinkler");
217+
order.add("Magnifying Glass");
218+
order.add("Tanning Mirror");
219+
order.add("Master Sprinkler");
220+
order.add("Cleaning Spray");
221+
order.add("Favorite Tool");
222+
order.add("Harvest Tool");
223+
order.add("Friendship Pot");
224+
return order;
225+
}
226+
return order;
201227
}
202228

203-
private void connectToEndpoint(List<String> seedOrder) {
229+
230+
private void connectToEndpoint(List<String> seedOrder, List<String> gearOrder) {
204231
OkHttpClient client = new OkHttpClient();
205232

206233
okhttp3.Request request = new okhttp3.Request.Builder()
@@ -217,32 +244,55 @@ public void onOpen(WebSocket webSocket, okhttp3.Response response) {
217244
public void onMessage(WebSocket webSocket, String text) {
218245
try {
219246
JSONObject json = new JSONObject(text);
220-
if (!json.has("seed_stock")) {
247+
if (!json.has("seed_stock") || !json.has("gear_stock")) {
221248
Log.d("WebSocket", "Skipping irrelevant packet");
222249
return;
223250
}
224251

225-
JSONArray seedStock = json.getJSONArray("seed_stock");
226-
Map<String, JSONObject> stockMap = new HashMap<>();
252+
if (json.has("seed_stock")) {
253+
JSONArray seedStock = json.getJSONArray("seed_stock");
254+
Map<String, JSONObject> stockMap = new HashMap<>();
227255

228-
for (int i = 0; i < seedStock.length(); i++) {
229-
JSONObject seed = seedStock.getJSONObject(i);
230-
stockMap.put(seed.getString("display_name"), seed);
231-
}
256+
for (int i = 0; i < seedStock.length(); i++) {
257+
JSONObject seed = seedStock.getJSONObject(i);
258+
stockMap.put(seed.getString("display_name"), seed);
259+
}
232260

233-
runOnUiThread(() -> {
234-
scrollContent.removeAllViews();
235-
loading.setText("");
236-
for (String name : seedOrder) {
237-
if (stockMap.containsKey(name)) {
238-
JSONObject seed = stockMap.get(name);
239-
String quantity = String.valueOf(seed.optInt("quantity", 0));
240-
String icon = seed.optString("icon", "");
241-
addSeedCard(name, quantity, icon);
261+
runOnUiThread(() -> {
262+
scrollContent.removeAllViews();
263+
loading.setText("");
264+
for (String name : seedOrder) {
265+
if (stockMap.containsKey(name)) {
266+
JSONObject seed = stockMap.get(name);
267+
String quantity = String.valueOf(seed.optInt("quantity", 0));
268+
String icon = seed.optString("icon", "");
269+
addCard(name, quantity, icon, "seed");
270+
}
242271
}
272+
});
273+
}
274+
if (json.has("gear_stock")) {
275+
JSONArray gearStock = json.getJSONArray("gear_stock");
276+
Map<String, JSONObject> stockMap = new HashMap<>();
277+
278+
for (int i = 0; i < gearStock.length(); i++) {
279+
JSONObject gear = gearStock.getJSONObject(i);
280+
stockMap.put(gear.getString("display_name"), gear);
243281
}
244-
});
245282

283+
runOnUiThread(() -> {
284+
gearContent.removeAllViews();
285+
loading.setText("");
286+
for (String name : gearOrder) {
287+
if (stockMap.containsKey(name)) {
288+
JSONObject seed = stockMap.get(name);
289+
String quantity = String.valueOf(seed.optInt("quantity", 0));
290+
String icon = seed.optString("icon", "");
291+
addCard(name, quantity, icon, "gear");
292+
}
293+
}
294+
});
295+
}
246296
} catch (Exception e) {
247297
Log.e("WebSocket", "Error parsing message", e);
248298
}
@@ -258,7 +308,7 @@ public void onFailure(WebSocket webSocket, Throwable t, okhttp3.Response respons
258308
}
259309

260310
@SuppressLint("SetTextI18n")
261-
private void addSeedCard(String name, String stock, String imageUrl) {
311+
private void addCard(String name, String stock, String imageUrl, String type) {
262312
Typeface gagFont = ResourcesCompat.getFont(this, R.font.gagfont);
263313
CardView card = new CardView(this);
264314
card.setRadius(12);
@@ -311,7 +361,10 @@ private void addSeedCard(String name, String stock, String imageUrl) {
311361
LinearLayout.LayoutParams.WRAP_CONTENT);
312362
cardParams.setMargins(16, 16, 16, 0);
313363
card.setLayoutParams(cardParams);
314-
315-
scrollContent.addView(card);
364+
if (Objects.equals(type, "seed")) {
365+
scrollContent.addView(card);
366+
} else if (Objects.equals(type, "gear")) {
367+
gearContent.addView(card);
368+
}
316369
}
317370
}

0 commit comments

Comments
 (0)