Skip to content

Commit e65ab80

Browse files
committed
un follow event added
1 parent 8b9b65a commit e65ab80

File tree

2 files changed

+190
-18
lines changed

2 files changed

+190
-18
lines changed

src/content/index.js

Lines changed: 134 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,119 @@ $(() => {
273273
}
274274
}
275275

276+
const startsUnFollowingPostProcess = ( responseData, key) => {
277+
console.log({ responseData });
278+
279+
280+
responseHandler(key, { success: true, data: responseData.data, hasMore: responseData.hasMore }, () => {
281+
console.log(responseData.hasMore);
282+
if (responseData.hasMore)
283+
window.location.href = responseData.hasMore;
284+
});
285+
}
286+
287+
288+
const startsUnFollowing = ( targets, key ) => {
289+
const body = $("body");
290+
const followersList = [];
291+
let hasNextPage = false;
292+
let finishedHere = true;
293+
if (body.length > 0) {
294+
const applicationMain = body.find("main#js-pjax-container");
295+
if (applicationMain.length > 0) {
296+
const applicationContainer = applicationMain.find(".container-xl");
297+
if (applicationContainer.length > 0 && applicationContainer.children()) {
298+
const followerContainers = applicationContainer.find(".d-table");
299+
if (followerContainers.length > 0) {
300+
followerContainers.each(function () {
301+
const followerItem = $(this);
302+
if (followerItem.length > 0) {
303+
if (followerItem.hasClass("d-table")) {
304+
let follower = {};
305+
try {
306+
const userImage = followerItem.find("img")[0];
307+
if (userImage) {
308+
follower.image = $(userImage).attr("src") || undefined;
309+
}
310+
} catch (err) { }
311+
try {
312+
const userName = followerItem.find("a[data-hovercard-type='user']>span")[0];
313+
314+
if (userName) {
315+
follower.name = $(userName).text() || undefined;
316+
}
317+
} catch (err) { }
318+
try {
319+
const userUsername = followerItem.find("a[data-hovercard-type='user']>span")[1];
320+
321+
if (userUsername) {
322+
follower.username = $(userUsername).text() || undefined;
323+
}
324+
} catch (err) { }
325+
try {
326+
const myStatus = followerItem.find("form:not([hidden='hidden']) input[type='submit']")[0];
327+
if (myStatus) {
328+
const statusValue = `${$(myStatus).val()}`.toLowerCase().trim();
329+
follower.status = statusValue === "unfollow";
330+
follower.action = follower.status ? myStatus : null;
331+
}
332+
} catch (err) { }
333+
if (follower.username) {
334+
if( Array.isArray(targets) && targets.length > 0) {
335+
console.log({targets});
336+
if( targets.includes( follower.username ) && follower.action) {
337+
console.log({ follower});
338+
finishedHere = false;
339+
if( follower.action) {
340+
console.log($(follower.action));
341+
follower.action.click();
342+
}
343+
}
344+
}
345+
346+
followersList.push(follower);
347+
}
348+
}
349+
}
350+
});
351+
352+
}
353+
}
354+
355+
356+
const pageAction = applicationContainer.find(".paginate-container .pagination a");
357+
console.warn(pageAction);
358+
if (pageAction) {
359+
const nextPage = pageAction[pageAction.length - 1];
360+
if (nextPage) {
361+
const nextStepText = `${$(nextPage).text()}`.toLowerCase().trim();
362+
if (nextStepText === "next") {
363+
hasNextPage = $(nextPage).attr("href") || undefined;
364+
}
365+
}
366+
}
367+
}
368+
}
369+
370+
if(!finishedHere) {
371+
setTimeout(()=> {
372+
console.log("reloading ....");
373+
startsUnFollowing(targets, key);
374+
},30);
375+
} else {
376+
startsUnFollowingPostProcess({
377+
data: followersList,
378+
hasMore: hasNextPage
379+
}, key);
380+
}
381+
382+
return ({
383+
data: followersList,
384+
hasMore: hasNextPage
385+
});
386+
}
387+
388+
276389
const startsListing = (key) => {
277390
let responseData = {
278391
data: [],
@@ -301,7 +414,7 @@ $(() => {
301414
};
302415
let success = false;
303416
try {
304-
responseData = listFollowingFromCurrentTab();
417+
responseData = listFollowingFromCurrentTab();
305418
console.log({ responseData });
306419
success = true;
307420
} catch (error) {
@@ -315,6 +428,24 @@ $(() => {
315428
});
316429
}
317430

431+
const startsUnFollowFollowingUsers = (key,targets) => {
432+
let responseData = {
433+
data: [],
434+
hasMore: false
435+
};
436+
let success = false;
437+
try {
438+
responseData = startsUnFollowing( targets , key);
439+
startsUnFollowingPostProcess(responseData, key);
440+
console.log({ responseData });
441+
success = true;
442+
} catch (error) {
443+
444+
}
445+
446+
}
447+
448+
318449
/**
319450
* This function is sued to list followers
320451
* @param {Object} payload
@@ -351,10 +482,10 @@ $(() => {
351482
const unFollowFollowing = (payload, response, key) => {
352483
const currentUrl = window.location.href;
353484
console.log({payload});
354-
if (payload) {
485+
if (payload && Array.isArray( payload.targets)) {
355486
if (typeof response === "function") {
356487
response(true, currentUrl);
357-
// startsListingFollowingUsers(key);
488+
startsUnFollowFollowingUsers(key, payload.targets);
358489
}
359490
}
360491
}

src/popup/terminal/index.js

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ $(() => {
3434
const localFollowersList = [];
3535
const rootUrl = `https://github.com`;
3636
const localFollowingList = [];
37+
const usersToUnFollow = [];
3738

3839
/** ====== define global values ===== */
3940
const formGotoLogin = $("#goto-login");
@@ -560,17 +561,20 @@ $(() => {
560561
}
561562
}
562563

563-
console.log(usersList);
564-
let targets = [];
564+
console.log(usersList);
565565
if (Array.isArray(usersList) && usersList.length > 0) {
566-
targets = usersList.map(user => user.username).filter(username => !!username);
566+
usersList.forEach(user => {
567+
if( user.username) {
568+
usersToUnFollow.push(user.username);
569+
}
570+
});
567571
}
568-
if (targets.length > 0) {
569-
572+
if (usersToUnFollow.length > 0) {
573+
570574
try {
571-
responseHandler("UN_FOLLOW_FOLLOWINGS", {
575+
responseHandler("UN_FOLLOW_FOLLOWING", {
572576
username: authorization.username,
573-
targets: targets
577+
targets: usersToUnFollow
574578
}, responseManger);
575579
} catch (error) {
576580
console.error(error);
@@ -653,11 +657,14 @@ $(() => {
653657

654658
const listingFollowers = (payload, response) => {
655659
if (payload && payload.success) {
660+
const localFollowersListNames = localFollowersList.map( d => d.username);
656661
const { data, hasMore } = payload;
657662
console.log(data);
658663
if (Array.isArray(data)) {
659664
data.forEach(each => {
660-
localFollowersList.push(each);
665+
if(! localFollowersListNames.includes(each.username)){
666+
localFollowersList.push(each);
667+
}
661668
});
662669
}
663670
const currentCount = localFollowersList.length;
@@ -695,12 +702,15 @@ $(() => {
695702

696703

697704
const listingFollowings = (payload, response) => {
698-
if (payload && payload.success) {
705+
const localFollowingListNames = localFollowingList.map( d => d.username);
706+
if (payload && payload.success) {
699707
const { data, hasMore } = payload;
700708
console.log(data);
701709
if (Array.isArray(data)) {
702710
data.forEach(each => {
703-
localFollowingList.push(each);
711+
if(! localFollowingListNames.includes ( each.username)) {
712+
localFollowingList.push(each);
713+
}
704714
});
705715
}
706716
const currentCount = localFollowingList.length;
@@ -739,11 +749,38 @@ $(() => {
739749

740750
const unFollowFollowings = (payload, response) => {
741751
if (payload && payload.success) {
742-
const { data } = payload;
752+
const { data, hasMore } = payload;
743753
console.log(data);
744-
setLoading();
745-
setOutPut(`success`);
746-
754+
if (hasMore) {
755+
756+
if (response) {
757+
response(true);
758+
}
759+
760+
const callback = () => {
761+
console.log("called callback");
762+
try {
763+
responseHandler("UN_FOLLOW_FOLLOWING", {
764+
username: authorization.username,
765+
targets: usersToUnFollow
766+
});
767+
} catch (error) {
768+
console.error(error);
769+
resolve(false);
770+
}
771+
}
772+
773+
setLoading(true, {
774+
key: "PAGE_READY",
775+
callback,
776+
callbackKey: "UN_FOLLOW_FOLLOWING",
777+
}, `un following users ...`);
778+
779+
} else {
780+
setLoading();
781+
setOutPut(`Success `);
782+
}
783+
747784
}
748785
}
749786

@@ -803,7 +840,11 @@ const unFollowFollowings = (payload, response) => {
803840
*/
804841
const followActions = async (command) => {
805842
const spitCommand = command.split(" ");
806-
843+
const loadFollowersResponse = await gotoFollowing();
844+
if (!loadFollowersResponse) {
845+
setOutPut("Something went wrong.");
846+
return;
847+
}
807848
if (
808849
!(Array.isArray(localFollowersList) && localFollowersList.length > 0)
809850
) {

0 commit comments

Comments
 (0)