4040import java .util .HashMap ;
4141import java .util .List ;
4242import java .util .Map ;
43+ import java .util .Objects ;
4344
4445import 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