Skip to content

Commit 2c804f3

Browse files
committed
fix #566
1 parent c3618b0 commit 2c804f3

File tree

6 files changed

+100
-7
lines changed

6 files changed

+100
-7
lines changed

src/main/java/com/shuzijun/leetcode/plugin/manager/QuestionManager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,12 +295,17 @@ public static Question pick(Project project, PageInfo<?> pageInfo) {
295295
}
296296

297297
public static User getUser() {
298-
HttpResponse response = Graphql.builder().cn(URLUtils.isCn()).operationName("userStatus").request();
298+
HttpResponse response = Graphql.builder().cn(URLUtils.isCn()).operationName("userStatus","globalData").request();
299299
if (response.getStatusCode() == 200) {
300300
JSONObject userObject = JSONObject.parseObject(response.getBody()).getJSONObject("data").getJSONObject("userStatus");
301301
User user = new User();
302302
user.setPremium(userObject.getBoolean("isPremium"));
303303
user.setUsername(userObject.getString("username"));
304+
if (userObject.containsValue("userSlug")){
305+
user.setUserSlug(userObject.getString("userSlug"));
306+
}else {
307+
user.setUserSlug(user.getUsername());
308+
}
304309
user.setSignedIn(userObject.getBoolean("isSignedIn"));
305310
user.setVerified(userObject.getBoolean("isVerified"));
306311
user.setPhoneVerified(userObject.getBoolean("isPhoneVerified"));

src/main/java/com/shuzijun/leetcode/plugin/manager/SessionManager.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
import com.alibaba.fastjson.JSONArray;
55
import com.alibaba.fastjson.JSONObject;
66
import com.intellij.openapi.project.Project;
7+
import com.shuzijun.leetcode.plugin.model.Graphql;
78
import com.shuzijun.leetcode.plugin.model.HttpRequest;
89
import com.shuzijun.leetcode.plugin.model.Session;
910
import com.shuzijun.leetcode.plugin.utils.*;
11+
import com.shuzijun.leetcode.plugin.window.WindowFactory;
1012

1113
import java.util.ArrayList;
1214
import java.util.List;
@@ -37,6 +39,39 @@ public static List<Session> getSession(Project project, boolean cache) {
3739
defSession.setEasy(jsonObject.getJSONObject("solvedPerDifficulty").getInteger("Easy"));
3840
defSession.setMedium(jsonObject.getJSONObject("solvedPerDifficulty").getInteger("Medium"));
3941
defSession.setHard(jsonObject.getJSONObject("solvedPerDifficulty").getInteger("Hard"));
42+
if (URLUtils.isCn()){
43+
HttpResponse sessionHttpResponse = Graphql.builder().cn(URLUtils.isCn()).operationName("userSessionProgress")
44+
.variables("userSlug", WindowFactory.getDataContext(project).getData(DataKeys.LEETCODE_PROJECTS_TABS).getUser().getUserSlug())
45+
.cacheParam(defSession.getName())
46+
.cache(cache)
47+
.request();
48+
if (sessionHttpResponse.getStatusCode() == 200){
49+
JSONObject questionProgressObject = JSON.parseObject(sessionHttpResponse.getBody()).getJSONObject("data").getJSONObject("userProfileUserQuestionProgress");
50+
JSONArray numAcceptedQuestions = questionProgressObject.getJSONArray("numAcceptedQuestions");
51+
for (int i = 0; i < numAcceptedQuestions.size(); i++) {
52+
JSONObject acceptedQuestions = numAcceptedQuestions.getJSONObject(i);
53+
if ("EASY".equals(acceptedQuestions.getString("difficulty"))){
54+
defSession.setEasy(acceptedQuestions.getInteger("count"));
55+
}else if ("MEDIUM".equals(acceptedQuestions.getString("difficulty"))){
56+
defSession.setMedium(acceptedQuestions.getInteger("count"));
57+
}else if ("HARD".equals(acceptedQuestions.getString("difficulty"))){
58+
defSession.setHard(acceptedQuestions.getInteger("count"));
59+
}
60+
}
61+
Integer attempted = 0;
62+
JSONArray numFailedQuestions = questionProgressObject.getJSONArray("numFailedQuestions");
63+
for (int i = 0; i < numFailedQuestions.size(); i++) {
64+
attempted = attempted + numFailedQuestions.getJSONObject(i).getInteger("count");
65+
}
66+
defSession.setAttempted(attempted);
67+
defSession.setSolvedTotal(defSession.getEasy()+defSession.getMedium()+defSession.getHard());
68+
defSession.setUnsolved(defSession.getQuestionTotal() - defSession.getSolvedTotal());
69+
70+
}
71+
}
72+
73+
74+
4075
sessionList.add(defSession);
4176

4277
JSONArray jsonArray = jsonObject.getJSONArray("sessionList");

src/main/java/com/shuzijun/leetcode/plugin/model/User.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ public class User {
99

1010
private String username;
1111

12+
13+
private String userSlug;
14+
1215
private boolean isPremium;
1316

1417
private boolean isSignedIn = Boolean.FALSE;
@@ -25,6 +28,14 @@ public void setUsername(String username) {
2528
this.username = username;
2629
}
2730

31+
public String getUserSlug() {
32+
return userSlug;
33+
}
34+
35+
public void setUserSlug(String userSlug) {
36+
this.userSlug = userSlug;
37+
}
38+
2839
public boolean isPremium() {
2940
return isPremium;
3041
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
query userSessionProgress($userSlug: String!) {
2+
userProfileUserQuestionSubmitStats(userSlug: $userSlug) {
3+
acSubmissionNum {
4+
difficulty
5+
count
6+
}
7+
totalSubmissionNum {
8+
difficulty
9+
count
10+
}
11+
}
12+
userProfileUserQuestionProgress(userSlug: $userSlug) {
13+
numAcceptedQuestions {
14+
difficulty
15+
count
16+
}
17+
numFailedQuestions {
18+
difficulty
19+
count
20+
}
21+
numUntouchedQuestions {
22+
difficulty
23+
count
24+
}
25+
}
26+
}
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
1-
query userStatus {
1+
query globalData {
22
userStatus {
3+
userId
34
isSignedIn
5+
isMockUser
46
isPremium
7+
isVerified
58
username
69
avatar
710
isAdmin
811
isSuperuser
12+
permissions
913
isTranslator
10-
isVerified
14+
activeSessionId
15+
notificationStatus {
16+
lastModified
17+
numUnread
18+
}
1119
}
1220
}
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
query userStatus {
1+
query globalData {
22
userStatus {
33
isSignedIn
44
isPremium
55
username
6+
realName
67
avatar
8+
userSlug
79
isAdmin
8-
isSuperuser
10+
useTranslation
11+
premiumExpiredAt
912
isTranslator
10-
isVerified
13+
isSuperuser
1114
isPhoneVerified
15+
isVerified
16+
}
17+
jobsMyCompany {
18+
nameSlug
1219
}
13-
}
20+
commonNojPermissionTypes
21+
}

0 commit comments

Comments
 (0)