diff --git a/src/main/java/me/kavin/piped/ServerLauncher.java b/src/main/java/me/kavin/piped/ServerLauncher.java index 0d70bd8..87a104a 100644 --- a/src/main/java/me/kavin/piped/ServerLauncher.java +++ b/src/main/java/me/kavin/piped/ServerLauncher.java @@ -254,9 +254,8 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher { try { String[] subscriptions = Constants.mapper.readValue(request.loadBody().getResult().asArray(), String[].class); - return getJsonResponse( - ResponseHelper.importResponse(request.getHeader(AUTHORIZATION), subscriptions), - "private"); + return getJsonResponse(ResponseHelper.importResponse(request.getHeader(AUTHORIZATION), + subscriptions, Boolean.parseBoolean(request.getQueryParameter("override"))), "private"); } catch (Exception e) { return getErrorResponse(e); } diff --git a/src/main/java/me/kavin/piped/utils/ResponseHelper.java b/src/main/java/me/kavin/piped/utils/ResponseHelper.java index cc32abc..24e4c48 100644 --- a/src/main/java/me/kavin/piped/utils/ResponseHelper.java +++ b/src/main/java/me/kavin/piped/utils/ResponseHelper.java @@ -801,7 +801,7 @@ public class ResponseHelper { } - public static final byte[] importResponse(String session, String[] channelIds) + public static final byte[] importResponse(String session, String[] channelIds, boolean override) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { Session s = DatabaseSessionFactory.createSession(); @@ -811,9 +811,12 @@ public class ResponseHelper { if (user != null) { Multithreading.runAsync(() -> { - for (String channelId : channelIds) - if (!user.getSubscribed().contains(channelId)) - user.getSubscribed().add(channelId); + if (override) + user.setSubscribed(Arrays.asList(channelIds)); + else + for (String channelId : channelIds) + if (!user.getSubscribed().contains(channelId)) + user.getSubscribed().add(channelId); if (channelIds.length > 0) { s.update(user);