From bc62995e898e79b940ef1b44282f9984c876fa65 Mon Sep 17 00:00:00 2001 From: SDIDSA Date: Fri, 21 Jul 2023 07:09:02 +0100 Subject: [PATCH 1/4] =?UTF-8?q?feat=20=E2=9C=A8:=20notify=20friends=20of?= =?UTF-8?q?=20profile=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abs/components/layout/fragment/FragmentPane.java | 4 ++++ .../org/luke/diminou/app/pages/home/online/Home.java | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/luke/diminou/abs/components/layout/fragment/FragmentPane.java b/app/src/main/java/org/luke/diminou/abs/components/layout/fragment/FragmentPane.java index 2ea01f4..fd8e3ac 100644 --- a/app/src/main/java/org/luke/diminou/abs/components/layout/fragment/FragmentPane.java +++ b/app/src/main/java/org/luke/diminou/abs/components/layout/fragment/FragmentPane.java @@ -65,6 +65,10 @@ private void navigateInto(Class fragmentType, int direction) }).start(); } + public boolean isEmpty() { + return loaded == null; + } + public boolean isRunning() { return running != null && running.isRunning(); } diff --git a/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java b/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java index 4604673..9170559 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java +++ b/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java @@ -86,7 +86,9 @@ public void setup() { content.setScaleX(.7f); content.setScaleY(.7f); - content.nextInto(Play.class); + if(content.isEmpty()) { + content.nextInto(Play.class); + } new ParallelAnimation(400) @@ -112,6 +114,13 @@ private void registerSocket() { user.set(key, obj.get(key)); } }); + addSocketEventHandler("user_change", obj -> + User.getForId(obj.getInt("user_id"), u -> { + for (Iterator it = obj.keys(); it.hasNext(); ) { + String key = it.next(); + u.set(key, obj.get(key)); + } + })); addSocketEventHandler("request_sent", obj -> { int sender = obj.getInt("sender"); int receiver = obj.getInt("receiver"); @@ -191,7 +200,6 @@ private void registerSocket() { addSocketEventHandler("leave", data -> { int userId = data.getInt("user_id"); - Room room = new Room(data.getJSONObject("game")); if(userId != owner.getUser().getId()) { Page loaded = owner.getLoaded(); From b4ce3b5347201040e9d6f899ae40d944129b42ac Mon Sep 17 00:00:00 2001 From: SDIDSA Date: Fri, 21 Jul 2023 08:36:03 +0100 Subject: [PATCH 2/4] =?UTF-8?q?feat=20=E2=9C=A8:=20display=20online=20stat?= =?UTF-8?q?us=20of=20friends?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diminou/abs/api/basic/BasicApiGet.java | 2 +- .../org/luke/diminou/abs/api/json/Param.java | 19 ++---- .../java/org/luke/diminou/app/Diminou.java | 2 +- .../diminou/app/avatar/AvatarDisplay.java | 59 ++++++++++++++++--- .../app/cards/online/MirorredCards.java | 12 ++++ .../diminou/app/cards/online/PlayerCard.java | 2 +- .../diminou/app/pages/home/online/Home.java | 10 +++- .../home/online/friends/UserDisplay.java | 1 + .../app/pages/home/online/global/Top.java | 1 + .../app/pages/host/offline/OfflineHost.java | 3 +- .../diminou/app/pages/host/online/Host.java | 59 +++++++++++++++++-- .../app/pages/join/online/HostDisplay.java | 1 + .../diminou/app/pages/join/online/Join.java | 7 ++- .../luke/diminou/app/pages/login/Login.java | 4 +- .../java/org/luke/diminou/data/JsonUtils.java | 4 +- .../org/luke/diminou/data/SessionManager.java | 4 +- .../org/luke/diminou/data/beans/User.java | 15 +++++ 17 files changed, 169 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/org/luke/diminou/abs/api/basic/BasicApiGet.java b/app/src/main/java/org/luke/diminou/abs/api/basic/BasicApiGet.java index 419fcb0..f10106c 100644 --- a/app/src/main/java/org/luke/diminou/abs/api/basic/BasicApiGet.java +++ b/app/src/main/java/org/luke/diminou/abs/api/basic/BasicApiGet.java @@ -32,7 +32,7 @@ public BasicApiGet(String path, Param... params) { public void execute(ObjectConsumer onResult, String token) throws IOException, ParseException, JSONException { try { - String uri = new URIBuilder().setPath(path).addParameters(Arrays.stream(params).map(param -> new BasicNameValuePair(param.getKey(), param.getValue())).collect(Collectors.toList())).build().toString().substring(1); + String uri = new URIBuilder().setPath(path).addParameters(Arrays.stream(params).map(param -> new BasicNameValuePair(param.getKey(), param.stringValue())).collect(Collectors.toList())).build().toString().substring(1); HttpGet httpGet = new HttpGet(uri); httpGet.addHeader("Accept", "application/json"); diff --git a/app/src/main/java/org/luke/diminou/abs/api/json/Param.java b/app/src/main/java/org/luke/diminou/abs/api/json/Param.java index 9e2807c..7418ebd 100644 --- a/app/src/main/java/org/luke/diminou/abs/api/json/Param.java +++ b/app/src/main/java/org/luke/diminou/abs/api/json/Param.java @@ -2,32 +2,25 @@ import androidx.annotation.NonNull; -import org.apache.hc.core5.http.NameValuePair; -import org.apache.hc.core5.http.message.BasicNameValuePair; - public class Param { - private String key; - private String value; + private final String key; + private final Object value; - public Param(String key, String value) { + public Param(String key, Object value) { this.key = key; this.value = value; } - public Param(String key, int value) { - this(key, Integer.toString(value)); - } - public String getKey() { return key; } - public String getValue() { + public Object getValue() { return value; } - public NameValuePair norm() { - return new BasicNameValuePair(key, value); + public String stringValue() { + return String.valueOf(value); } @NonNull diff --git a/app/src/main/java/org/luke/diminou/app/Diminou.java b/app/src/main/java/org/luke/diminou/app/Diminou.java index 8fba9da..603ab26 100755 --- a/app/src/main/java/org/luke/diminou/app/Diminou.java +++ b/app/src/main/java/org/luke/diminou/app/Diminou.java @@ -47,7 +47,7 @@ protected void postCreate() { int userId = result.getInt("user"); User.getForId(userId, user -> { putUser(user); - SessionManager.registerSocket(getMainSocket(), token, String.valueOf(user.getId())); + SessionManager.registerSocket(getMainSocket(), token, user.getId()); loadPage(Home.class); }); } else { diff --git a/app/src/main/java/org/luke/diminou/app/avatar/AvatarDisplay.java b/app/src/main/java/org/luke/diminou/app/avatar/AvatarDisplay.java index 6407622..3cb75c6 100644 --- a/app/src/main/java/org/luke/diminou/app/avatar/AvatarDisplay.java +++ b/app/src/main/java/org/luke/diminou/app/avatar/AvatarDisplay.java @@ -3,10 +3,16 @@ import android.graphics.drawable.GradientDrawable; import org.luke.diminou.abs.components.controls.image.ImageProxy; +import org.luke.diminou.abs.components.controls.shape.Rectangle; import org.luke.diminou.abs.components.layout.StackPane; + +import android.view.Gravity; +import android.widget.FrameLayout; import android.widget.LinearLayout; +import androidx.annotation.ColorInt; + import org.luke.diminou.abs.App; import org.luke.diminou.abs.components.controls.image.Image; import org.luke.diminou.abs.style.Style; @@ -19,14 +25,18 @@ public class AvatarDisplay extends StackPane implements Styleable { private final App owner; private final GradientDrawable background; - private final GradientDrawable foreground; private final Image img; + private final GradientDrawable onlineBack; + private final FrameLayout preOnline; + private final Rectangle online; public static final int preSize = 64; private final ChangeListener onUrl; + private final ChangeListener onOnline; + private User old; public AvatarDisplay(App owner, float sizeDp) { @@ -37,21 +47,44 @@ public AvatarDisplay(App owner, float sizeDp) { setLayoutParams(new LinearLayout.LayoutParams(size, size)); background = new GradientDrawable(); - foreground = new GradientDrawable(); int radii = ViewUtils.dipToPx(7, owner); background.setCornerRadius(radii); - foreground.setCornerRadius(radii); setBackground(background); - setForeground(foreground); img = new Image(owner); img.setSize(sizeDp); - img.setCornerRadius(7); + ViewUtils.setPaddingUnified(img, 1, owner); + img.setCornerRadius(10); - onUrl = (obs, ov, nv) -> ImageProxy.getImage(nv, img::setImageBitmap); + float preOnlineSizeDp = sizeDp / 3f; + int preOnlineSizePx = ViewUtils.dipToPx(preOnlineSizeDp, owner); + float strokeWidthDp = preOnlineSizeDp / 4f; + float onlineSizeDp = preOnlineSizeDp - 2 * strokeWidthDp; + + onlineBack = new GradientDrawable(); + onlineBack.setCornerRadius(preOnlineSizePx); + + preOnline = new FrameLayout(owner); + preOnline.setBackground(onlineBack); + preOnline.setLayoutParams(new LayoutParams(preOnlineSizePx, preOnlineSizePx)); + ViewUtils.alignInFrame(preOnline, Gravity.BOTTOM | Gravity.END); + int by = ViewUtils.dipToPx(strokeWidthDp - 1, owner); + preOnline.setTranslationY(by); + preOnline.setTranslationX(by); + + online = new Rectangle(owner); + online.setRadius(onlineSizeDp); + online.setSize(onlineSizeDp, onlineSizeDp); + ViewUtils.alignInFrame(online, Gravity.CENTER); + + preOnline.addView(online); addView(img); + addView(preOnline); + + onUrl = (obs, ov, nv) -> ImageProxy.getImage(nv, img::setImageBitmap); + onOnline = (obs, ov, nv) -> applyStyle(owner.getStyle()); applyStyle(owner.getStyle()); } @@ -74,20 +107,32 @@ public void setValue(Avatar value) { public void setUser(User user) { if(old != null) { old.avatarProperty().removeListener(onUrl); + old.onlineProperty().removeListener(onOnline); } old = user; user.avatarProperty().addListener(onUrl); + user.onlineProperty().addListener(onOnline); } public void setValue(String val) { setValue(Avatar.valueOf(val)); } + public void setOnlineBackground(@ColorInt int color) { + onlineBack.setColor(color); + } + @Override public void applyStyle(Style style) { + boolean isOnline = (old != null && old.isOnline()); + int borderColor = isOnline ? style.getTextPositive() : style.getTextMuted(); + preOnline.setVisibility(isOnline ? VISIBLE : INVISIBLE); + background.setColor(style.getBackgroundPrimary()); - foreground.setStroke(ViewUtils.dipToPx(1, owner), style.getTextMuted()); + background.setStroke(ViewUtils.dipToPx(1, owner), borderColor); + online.setFill(style.getTextPositive()); + onlineBack.setStroke(ViewUtils.dipToPx(1, owner), borderColor); } @Override diff --git a/app/src/main/java/org/luke/diminou/app/cards/online/MirorredCards.java b/app/src/main/java/org/luke/diminou/app/cards/online/MirorredCards.java index 984c506..f2a343d 100644 --- a/app/src/main/java/org/luke/diminou/app/cards/online/MirorredCards.java +++ b/app/src/main/java/org/luke/diminou/app/cards/online/MirorredCards.java @@ -6,7 +6,9 @@ import org.luke.diminou.abs.components.controls.scratches.Orientation; import org.luke.diminou.abs.components.layout.linear.HBox; import org.luke.diminou.abs.components.layout.linear.VBox; +import org.luke.diminou.abs.utils.ErrorHandler; import org.luke.diminou.abs.utils.ViewUtils; +import org.luke.diminou.abs.utils.functional.ObjectConsumer; import org.luke.diminou.app.cards.offline.OfflineDisplayCards; import org.luke.diminou.app.cards.offline.OfflinePlayerCard; @@ -57,4 +59,14 @@ public void unbind() { card.unbind(); } } + + public void forEach(ObjectConsumer o) { + for(PlayerCard card : cards) { + try { + o.accept(card); + } catch (Exception e) { + ErrorHandler.handle(e, "running cards foreach"); + } + } + } } diff --git a/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java b/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java index 835605b..ef27465 100644 --- a/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java +++ b/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java @@ -129,7 +129,7 @@ public PlayerCard(App owner, boolean host, int index) { }else { preAvatar.removeAllViews(); preAvatar.addView(avatarDisplay, 0); - if(host) { + if(host || (boundTo != null && boundTo.host)) { if (nv.isSelf()) remove.setImageResource(R.drawable.owner); else remove.setImageResource(R.drawable.close); preAvatar.addView(remove); diff --git a/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java b/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java index 9170559..3aaed9c 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java +++ b/app/src/main/java/org/luke/diminou/app/pages/home/online/Home.java @@ -1,5 +1,6 @@ package org.luke.diminou.app.pages.home.online; +import android.util.Log; import android.widget.LinearLayout; import androidx.core.graphics.Insets; @@ -33,6 +34,7 @@ import org.luke.diminou.data.property.Property; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; public class Home extends Page { @@ -108,6 +110,11 @@ private void registerSocket() { User user = owner.getUser(); registeredListeners.forEach(owner.getMainSocket()::off); registeredListeners.clear(); + + owner.getMainSocket().onAnyIncoming(e -> { + Log.i("received" ,Arrays.toString(e)); + }); + addSocketEventHandler("user_sync", obj -> { for (Iterator it = obj.keys(); it.hasNext(); ) { String key = it.next(); @@ -118,7 +125,8 @@ private void registerSocket() { User.getForId(obj.getInt("user_id"), u -> { for (Iterator it = obj.keys(); it.hasNext(); ) { String key = it.next(); - u.set(key, obj.get(key)); + if(!key.equals("user_id")) + u.set(key, obj.get(key)); } })); addSocketEventHandler("request_sent", obj -> { diff --git a/app/src/main/java/org/luke/diminou/app/pages/home/online/friends/UserDisplay.java b/app/src/main/java/org/luke/diminou/app/pages/home/online/friends/UserDisplay.java index 3a5dfd0..818764e 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/home/online/friends/UserDisplay.java +++ b/app/src/main/java/org/luke/diminou/app/pages/home/online/friends/UserDisplay.java @@ -130,6 +130,7 @@ private UserDisplay(App owner, int userId) { public void applyStyle(Style style) { root.setBackground(style.getBackgroundTertiary()); root.setBorderColor(style.getTextMuted()); + img.setOnlineBackground(style.getBackgroundTertiary()); setBackground(style.getTextMuted()); } diff --git a/app/src/main/java/org/luke/diminou/app/pages/home/online/global/Top.java b/app/src/main/java/org/luke/diminou/app/pages/home/online/global/Top.java index d8ef3f3..d712b0a 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/home/online/global/Top.java +++ b/app/src/main/java/org/luke/diminou/app/pages/home/online/global/Top.java @@ -188,6 +188,7 @@ public void setup(User user) { public void applyStyle(Style style) { newUn.setBackgroundColor(style.getBackgroundTertiary()); newUn.setBorderColor(Color.TRANSPARENT); + pfp.setOnlineBackground(style.getBackgroundPrimary()); } @Override diff --git a/app/src/main/java/org/luke/diminou/app/pages/host/offline/OfflineHost.java b/app/src/main/java/org/luke/diminou/app/pages/host/offline/OfflineHost.java index 323cbe0..130f3a5 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/host/offline/OfflineHost.java +++ b/app/src/main/java/org/luke/diminou/app/pages/host/offline/OfflineHost.java @@ -23,6 +23,7 @@ import org.luke.diminou.abs.utils.ErrorHandler; import org.luke.diminou.abs.utils.Platform; import org.luke.diminou.abs.utils.Store; +import org.luke.diminou.abs.utils.ViewUtils; import org.luke.diminou.app.avatar.Avatar; import org.luke.diminou.app.cards.offline.OfflineDisplayCards; import org.luke.diminou.app.cards.offline.OfflineMirorredCards; @@ -154,7 +155,7 @@ public void setup() { offlineMirorredCards.bind(cards); start.setAlpha(0); - start.setTranslationY(40); + start.setTranslationY(ViewUtils.by(owner)); start.setScaleX(.7f); start.setScaleY(.7f); diff --git a/app/src/main/java/org/luke/diminou/app/pages/host/online/Host.java b/app/src/main/java/org/luke/diminou/app/pages/host/online/Host.java index c3cc08b..c3a6f63 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/host/online/Host.java +++ b/app/src/main/java/org/luke/diminou/app/pages/host/online/Host.java @@ -1,8 +1,21 @@ package org.luke.diminou.app.pages.host.online; +import android.widget.LinearLayout; + +import org.luke.diminou.R; import org.luke.diminou.abs.App; +import org.luke.diminou.abs.animation.base.Animation; +import org.luke.diminou.abs.animation.combine.ParallelAnimation; +import org.luke.diminou.abs.animation.easing.Interpolator; +import org.luke.diminou.abs.animation.view.AlphaAnimation; +import org.luke.diminou.abs.animation.view.position.TranslateYAnimation; +import org.luke.diminou.abs.animation.view.scale.ScaleXYAnimation; import org.luke.diminou.abs.api.Session; +import org.luke.diminou.abs.components.controls.button.Button; +import org.luke.diminou.abs.components.controls.button.PrimaryButton; +import org.luke.diminou.abs.components.controls.text.font.Font; import org.luke.diminou.abs.utils.Platform; +import org.luke.diminou.abs.utils.ViewUtils; import org.luke.diminou.app.cards.online.DisplayCards; import org.luke.diminou.app.cards.online.MirorredCards; import org.luke.diminou.app.pages.Titled; @@ -15,7 +28,8 @@ public class Host extends Titled { private final RoomId idDisp; private final DisplayCards cards; - private final MirorredCards mirorredCards; + + private final Animation showStart, hideStart; private String roomId; @@ -27,13 +41,14 @@ public Host(App owner) { idDisp = new RoomId(owner); cards = new DisplayCards(owner, true); - mirorredCards = new MirorredCards(owner); + cards.setLayoutParams(new LayoutParams(0, 0)); + MirorredCards mirorredCards = new MirorredCards(owner); mirorredCards.bind(cards); invite = new Invite(owner); - cards.forEach(card -> { + mirorredCards.forEach(card -> { card.setOnClickListener(v -> { if(!card.isLoaded()) { invite.show(); @@ -41,9 +56,31 @@ public Host(App owner) { }); }); + Button start = new PrimaryButton(owner, "start_game"); + start.setLayoutParams(new LinearLayout.LayoutParams(-1, -2)); + start.setFont(new Font(18)); + content.addView(idDisp); content.addView(cards); content.addView(mirorredCards); + content.addView(start); + + start.setAlpha(0); + start.setTranslationY(ViewUtils.by(owner)); + start.setScaleX(.7f); + start.setScaleY(.7f); + + hideStart = new ParallelAnimation(300) + .addAnimation(new TranslateYAnimation(start, 40)) + .addAnimation(new AlphaAnimation(start, 0)) + .addAnimation(new ScaleXYAnimation(start, .7f)) + .setInterpolator(Interpolator.EASE_OUT); + + showStart = new ParallelAnimation(300) + .addAnimation(new TranslateYAnimation(start, 0)) + .addAnimation(new AlphaAnimation(start, 1)) + .addAnimation(new ScaleXYAnimation(start, 1)) + .setInterpolator(Interpolator.OVERSHOOT); } public String getRoomId() { @@ -51,11 +88,25 @@ public String getRoomId() { } public void joined(int id) { - User.getForId(id, user -> cards.getLast().loadPlayer(user)); + User.getForId(id, user -> { + owner.playMenuSound(R.raw.joined); + cards.getLast().loadPlayer(user); + checkCount(); + }); } public void left(int id) { + owner.playMenuSound(R.raw.left); cards.unloadPlayer(id); + checkCount(); + } + + private void checkCount() { + if(cards.size() > 1) { + showStart.start(); + }else { + hideStart.start(); + } } @Override diff --git a/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java b/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java index 3bd9a4d..fd3d5e8 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java +++ b/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java @@ -51,6 +51,7 @@ public void setUser(User user) { public void applyStyle(Style style) { setBackground(style.getBackgroundPrimary()); setBorderColor(style.getTextMuted()); + avatar.setBackground(style.getBackgroundPrimary()); } @Override diff --git a/app/src/main/java/org/luke/diminou/app/pages/join/online/Join.java b/app/src/main/java/org/luke/diminou/app/pages/join/online/Join.java index de782d1..083415b 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/join/online/Join.java +++ b/app/src/main/java/org/luke/diminou/app/pages/join/online/Join.java @@ -1,5 +1,6 @@ package org.luke.diminou.app.pages.join.online; +import org.luke.diminou.R; import org.luke.diminou.abs.App; import org.luke.diminou.abs.api.Session; import org.luke.diminou.abs.utils.Platform; @@ -32,11 +33,15 @@ public Join(App owner) { } public void joined(int id) { - User.getForId(id, user -> cards.getLast().loadPlayer(user)); + User.getForId(id, user -> { + owner.playMenuSound(R.raw.joined); + cards.getLast().loadPlayer(user); + }); } public void left(int id) { cards.unloadPlayer(id); + owner.playMenuSound(R.raw.left); } public String getRoomId() { diff --git a/app/src/main/java/org/luke/diminou/app/pages/login/Login.java b/app/src/main/java/org/luke/diminou/app/pages/login/Login.java index cda662f..3dbdbfc 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/login/Login.java +++ b/app/src/main/java/org/luke/diminou/app/pages/login/Login.java @@ -79,7 +79,7 @@ public Login(App owner) { int userId = res.getInt("user"); Bean.clearCache(); SessionManager.storeSession(token, - owner, String.valueOf(userId), t -> + owner, userId, t -> User.getForId(userId, user -> { handleUser(user, token); google.stopLoading(); @@ -90,7 +90,7 @@ public Login(App owner) { int userId = upres.getInt("user"); Bean.clearCache(); SessionManager.storeSession(token, - owner, String.valueOf(userId), t -> + owner, userId, t -> User.getForId(userId, user -> { handleUser(user, token); google.stopLoading(); diff --git a/app/src/main/java/org/luke/diminou/data/JsonUtils.java b/app/src/main/java/org/luke/diminou/data/JsonUtils.java index 8fd9c47..9ff862f 100644 --- a/app/src/main/java/org/luke/diminou/data/JsonUtils.java +++ b/app/src/main/java/org/luke/diminou/data/JsonUtils.java @@ -9,7 +9,7 @@ private JsonUtils() { } - public static JSONObject make(String... strings) { + public static JSONObject make(Object... strings) { if (strings.length % 2 == 1) { throw new IllegalArgumentException("must be called with an even number of args"); } @@ -18,7 +18,7 @@ public static JSONObject make(String... strings) { for (int i = 0; i < strings.length; i += 2) { try { - obj.put(strings[i], strings[i + 1]); + obj.put((String) strings[i], strings[i + 1]); } catch (JSONException e) { ErrorHandler.handle(e, "making json"); } diff --git a/app/src/main/java/org/luke/diminou/data/SessionManager.java b/app/src/main/java/org/luke/diminou/data/SessionManager.java index dad5fee..c535fb6 100644 --- a/app/src/main/java/org/luke/diminou/data/SessionManager.java +++ b/app/src/main/java/org/luke/diminou/data/SessionManager.java @@ -21,7 +21,7 @@ private SessionManager() { } - public static void registerSocket(Socket socket, String token, String uid) { + public static void registerSocket(Socket socket, String token, int uid) { Runnable register = () -> socket.emit("register", JsonUtils.make("socket", socket.id(), "token", token, "user_id", uid)); @@ -36,7 +36,7 @@ public static void registerSocket(Socket socket, String token, String uid) { register.run(); } - public static void storeSession(String token, App owner, String uid, StringConsumer onSuccess) { + public static void storeSession(String token, App owner, int uid, StringConsumer onSuccess) { Store.setAccessToken(token, onSuccess); Socket socket = owner.getMainSocket(); registerSocket(socket, token, uid); diff --git a/app/src/main/java/org/luke/diminou/data/beans/User.java b/app/src/main/java/org/luke/diminou/data/beans/User.java index 400ca71..67cd44f 100644 --- a/app/src/main/java/org/luke/diminou/data/beans/User.java +++ b/app/src/main/java/org/luke/diminou/data/beans/User.java @@ -28,6 +28,8 @@ public static User getForIdSync(int id) { private final Property friend; + private final Property online; + private User(JSONObject obj) { points = new Property<>(); id = new Property<>(); @@ -37,6 +39,7 @@ private User(JSONObject obj) { username = new Property<>(); email = new Property<>(); friend = new Property<>(); + online = new Property<>(false); init(obj); } @@ -136,6 +139,18 @@ public void setFriend(String val) { friend.set(val); } + public Property onlineProperty() { + return online; + } + + public Boolean isOnline() { + return online.get(); + } + + public void setOnline(Boolean val) { + online.set(val); + } + public boolean isSelf() { return friend.get().equals("self"); } From 9b68e60bfb7288fc0598b08ea24d89e198951ec5 Mon Sep 17 00:00:00 2001 From: SDIDSA Date: Fri, 21 Jul 2023 08:44:47 +0100 Subject: [PATCH 3/4] =?UTF-8?q?chore=20=F0=9F=A7=B9:=20online=20status=20d?= =?UTF-8?q?isplay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/luke/diminou/app/cards/online/PlayerCard.java | 6 ++++-- .../org/luke/diminou/app/pages/join/online/HostDisplay.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java b/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java index ef27465..6b88772 100644 --- a/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java +++ b/app/src/main/java/org/luke/diminou/app/cards/online/PlayerCard.java @@ -104,7 +104,7 @@ public PlayerCard(App owner, boolean host, int index) { removeBy = ViewUtils.dipToPx(6, owner); remove = new ColorIcon(owner, R.drawable.close); - remove.setSize(32); + remove.setSize(28); remove.setCornerRadius(7); remove.setTranslationY(-removeBy); remove.setTranslationX(removeBy); @@ -113,7 +113,7 @@ public PlayerCard(App owner, boolean host, int index) { confirmKick.show(); } }); - ViewUtils.setPaddingUnified(remove, 5, owner); + ViewUtils.setPaddingUnified(remove, 4, owner); ViewUtils.alignInFrame(remove, Gravity.TOP | Gravity.END); addView(preAvatar); @@ -406,6 +406,8 @@ public void applyStyle(Style style) { avatarBack.setColor(style.getBackgroundTertiary()); avatarBack.setStroke(ViewUtils.dipToPx(1, getOwner()), style.getTextMuted()); + avatarDisplay.setOnlineBackground(style.getBackgroundTertiary()); + loading.setFill(style.getTextMuted()); remove.setBackgroundColor(style.getBackgroundTertiary()); diff --git a/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java b/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java index fd3d5e8..9269488 100644 --- a/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java +++ b/app/src/main/java/org/luke/diminou/app/pages/join/online/HostDisplay.java @@ -51,7 +51,7 @@ public void setUser(User user) { public void applyStyle(Style style) { setBackground(style.getBackgroundPrimary()); setBorderColor(style.getTextMuted()); - avatar.setBackground(style.getBackgroundPrimary()); + avatar.setOnlineBackground(style.getBackgroundPrimary()); } @Override From 9882c95bfc75d1645917563ba92741189a242327 Mon Sep 17 00:00:00 2001 From: SDIDSA Date: Fri, 21 Jul 2023 08:45:35 +0100 Subject: [PATCH 4/4] =?UTF-8?q?chore=20=F0=9F=A7=B9:=20updated=20version?= =?UTF-8?q?=20to=200.1.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index cac475a..1604f59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,7 @@ android { minSdk 24 targetSdk 34 versionCode 1 - versionName "0.1.0" + versionName "0.1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }