Commit 1404712a authored by fallenstardust's avatar fallenstardust

转在线卡组update时间为unix时间

移除不使用的syncdecks方法
parent 456989a6
...@@ -6,6 +6,8 @@ import com.google.gson.Gson; ...@@ -6,6 +6,8 @@ import com.google.gson.Gson;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -425,7 +427,7 @@ public class DeckSquareApiUtil { ...@@ -425,7 +427,7 @@ public class DeckSquareApiUtil {
} }
public static boolean synchronizeDecksV2() throws IOException { public static boolean synchronizeDecks() throws IOException {
// 检查用户是否登录 // 检查用户是否登录
LoginToken loginToken = DeckSquareApiUtil.getLoginData(); LoginToken loginToken = DeckSquareApiUtil.getLoginData();
if (loginToken == null) { if (loginToken == null) {
...@@ -461,80 +463,12 @@ public class DeckSquareApiUtil { ...@@ -461,80 +463,12 @@ public class DeckSquareApiUtil {
// 比对更新时间 // 比对更新时间
String localUpdateDate = localDeck.getUpdateDate(); String localUpdateDate = localDeck.getUpdateDate();
String onlineUpdateDate = String.valueOf(0);//todo 这里应该把2025-05-19T06:11:17转成毫秒,onlineDeck.getDeckUpdateDate(); String onlineUpdateDate ="";
if (onlineUpdateDate != null && (localUpdateDate == null || onlineUpdateDate.compareTo(localUpdateDate) > 0)) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组 LocalDateTime dateTime = LocalDateTime.parse(onlineDeck.getDeckUpdateDate());
downloadOnlineDeck(onlineDeck, localDeck.getDeckPath()); onlineUpdateDate = String.valueOf(dateTime.toInstant(ZoneOffset.UTC).toEpochMilli());
} else {
// 本地卡组更新时间更晚,上传本地卡组覆盖在线卡组
uploadLocalDeck(localDeck, onlineDeck.getDeckId(), loginToken);
}
break;
}
}
}
// 处理只存在于在线的卡组(即本地没有同名卡组)
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
if (!onlineDeckProcessed.get(onlineDeck.getDeckName())) {
downloadMissingDeckToLocal(onlineDeck);
} }
} LogUtil.d("seesee", localUpdateDate +"//"+ onlineUpdateDate);
return true;
}
public static void synchronizeDecks() {
// 检查用户是否登录
LoginToken loginToken = DeckSquareApiUtil.getLoginData();
if (loginToken == null) {
return;
}
// 在后台线程执行网络操作
VUiKit.defer().when(() -> {
try {
// 获取本地卡组列表
List<MyDeckItem> localDecks = DeckSquareFileUtil.getMyDeckItem();
// 获取在线卡组列表
MyDeckResponse onlineDecksResponse = DeckSquareApiUtil.getUserDecks(loginToken);
if (onlineDecksResponse == null || onlineDecksResponse.getData() == null) {
return null;
}
// 创建同步结果对象
SyncResult result = new SyncResult();
result.localDecks = localDecks;
result.onlineDecks = onlineDecksResponse.getData();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}).done((result) -> {
if (result != null) {
// 在后台线程处理同步逻辑
try {
List<MyDeckItem> localDecks = result.localDecks;
List<MyOnlineDeckDetail> onlineDecks = result.onlineDecks;
// 用于标记在线卡组是否在本地有对应
Map<String, Boolean> onlineDeckProcessed = new HashMap<>();
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
onlineDeckProcessed.put(onlineDeck.getDeckName(), false);
}
// 遍历本地卡组,处理同名卡组的情况
for (MyDeckItem localDeck : localDecks) {
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
if (localDeck.getDeckName().equals(onlineDeck.getDeckName())) {
// 标记该在线卡组已处理
onlineDeckProcessed.put(onlineDeck.getDeckName(), true);
// 比对更新时间
String localUpdateDate = localDeck.getUpdateDate();
String onlineUpdateDate = onlineDeck.getDeckUpdateDate();
if (onlineUpdateDate != null && (localUpdateDate == null || onlineUpdateDate.compareTo(localUpdateDate) > 0)) { if (onlineUpdateDate != null && (localUpdateDate == null || onlineUpdateDate.compareTo(localUpdateDate) > 0)) {
// 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组 // 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组
downloadOnlineDeck(onlineDeck, localDeck.getDeckPath()); downloadOnlineDeck(onlineDeck, localDeck.getDeckPath());
...@@ -554,23 +488,8 @@ public class DeckSquareApiUtil { ...@@ -554,23 +488,8 @@ public class DeckSquareApiUtil {
} }
} }
} catch (Exception e) { return true;
e.printStackTrace();
}
}
}).fail((e) -> {
e.printStackTrace();
// 处理错误,可以在主线程显示错误提示
VUiKit.post(() -> {
// 显示错误提示的代码
});
});
}
// 内部类用于传递同步结果
private static class SyncResult {
List<MyDeckItem> localDecks;
List<MyOnlineDeckDetail> onlineDecks;
} }
private static boolean downloadMissingDeckToLocal(MyOnlineDeckDetail onlineDeck) { private static boolean downloadMissingDeckToLocal(MyOnlineDeckDetail onlineDeck) {
...@@ -586,7 +505,7 @@ public class DeckSquareApiUtil { ...@@ -586,7 +505,7 @@ public class DeckSquareApiUtil {
String deckContent = deckDetail.getDeckYdk(); String deckContent = deckDetail.getDeckYdk();
// 构建本地文件路径 // 构建本地文件路径
String deckDirectory = AppsSettings.get().getResourcePath() + Constants.CORE_DECK_PATH; String deckDirectory = AppsSettings.get().getResourcePath() + "/" + Constants.CORE_DECK_PATH;
File dir = new File(deckDirectory); File dir = new File(deckDirectory);
if (!dir.exists()) { if (!dir.exists()) {
boolean created = dir.mkdirs(); boolean created = dir.mkdirs();
...@@ -607,7 +526,7 @@ public class DeckSquareApiUtil { ...@@ -607,7 +526,7 @@ public class DeckSquareApiUtil {
// 保存在线卡组到本地 // 保存在线卡组到本地
boolean saved = DeckSquareFileUtil.saveFileToPath(filePath, onlineDeck.getDeckName(), deckContent); boolean saved = DeckSquareFileUtil.saveFileToPath(filePath, onlineDeck.getDeckName(), deckContent);
if (!saved) { if (!saved) {
LogUtil.e(TAG, "Failed to save deck file: " + filePath); LogUtil.e(TAG, "downloadMissingDeckToLocal-Failed to save deck file: " + filePath);
return false; return false;
} }
...@@ -644,7 +563,7 @@ public class DeckSquareApiUtil { ...@@ -644,7 +563,7 @@ public class DeckSquareApiUtil {
// 保存在线卡组到本地 // 保存在线卡组到本地
boolean saved = DeckSquareFileUtil.saveFileToPath(localPath, onlineDeck.getDeckName(), deckContent); boolean saved = DeckSquareFileUtil.saveFileToPath(localPath, onlineDeck.getDeckName(), deckContent);
if (!saved) { if (!saved) {
LogUtil.e(TAG, "Failed to save deck file: " + localPath); LogUtil.e(TAG, "downloadOnlineDeck-Failed to save deck file: " + localPath);
return false; return false;
} }
......
...@@ -120,7 +120,7 @@ public class DeckSquareMyDeckFragment extends Fragment { ...@@ -120,7 +120,7 @@ public class DeckSquareMyDeckFragment extends Fragment {
/** 自动同步 */ /** 自动同步 */
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
return DeckSquareApiUtil.synchronizeDecksV2(); return DeckSquareApiUtil.synchronizeDecks();
}).fail((e) -> { }).fail((e) -> {
LogUtil.i(TAG, "Like deck fail" + e.getMessage()); LogUtil.i(TAG, "Like deck fail" + e.getMessage());
...@@ -206,7 +206,7 @@ public class DeckSquareMyDeckFragment extends Fragment { ...@@ -206,7 +206,7 @@ public class DeckSquareMyDeckFragment extends Fragment {
/** 自动同步 */ /** 自动同步 */
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
return DeckSquareApiUtil.synchronizeDecksV2(); return DeckSquareApiUtil.synchronizeDecks();
}).fail((e) -> { }).fail((e) -> {
LogUtil.i(TAG, "Like deck fail" + e.getMessage()); LogUtil.i(TAG, "Like deck fail" + e.getMessage());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment