Commit 6d646d176e929a8fd73c3274142efcb3bcd55ea1
1 parent
a329554618
Exists in
master
restrukturisasi manajemen friendlist
Showing 1 changed file with 24 additions and 9 deletions Side-by-side Diff
partner-im.js
... | ... | @@ -16,8 +16,6 @@ var imConfig; |
16 | 16 | var redisClient; |
17 | 17 | var isOnline = false; |
18 | 18 | |
19 | -var friendList = []; | |
20 | - | |
21 | 19 | var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36}); |
22 | 20 | var invalidReplies = new CircularBuffer(10); |
23 | 21 | var unknownTrx = new CircularBuffer(10); |
... | ... | @@ -499,11 +497,7 @@ function cancelResendDelay(task) { |
499 | 497 | catch(e) {}; |
500 | 498 | } |
501 | 499 | |
502 | -function onOnline() { | |
503 | - logger.info('Login successful, resuming aaa communication'); | |
504 | - isOnline = true; | |
505 | - | |
506 | - | |
500 | +function addAllPartnersToFriendList() { | |
507 | 501 | var partners = getPartnersFromString(config.h2h_out.partner + ',' + config.h2h_out.allow_response_from); |
508 | 502 | var partnerCount = partners.length; |
509 | 503 | |
... | ... | @@ -511,6 +505,13 @@ function onOnline() { |
511 | 505 | logger.verbose('Adding ' + partners[i] + ' as friend'); |
512 | 506 | addFriend(partners[i]); |
513 | 507 | } |
508 | +} | |
509 | + | |
510 | +function onOnline() { | |
511 | + logger.info('Login successful, resuming aaa communication'); | |
512 | + isOnline = true; | |
513 | + | |
514 | + addAllPartnersToFriendList(); | |
514 | 515 | |
515 | 516 | try { |
516 | 517 | aaa.resume(); |
... | ... | @@ -694,6 +695,10 @@ function getOnlinePartners(partners) { |
694 | 695 | |
695 | 696 | function getRandomPartnerId(forceOnlyHealthPartners) { |
696 | 697 | var _partners = getPartnersFromString(config.h2h_out.partner); |
698 | + | |
699 | + // tambah partner ke friend list, untuk menangani perubahan config | |
700 | + addAllPartnersToFriendList(_partners); | |
701 | + | |
697 | 702 | var partners = getOnlinePartners(_partners); |
698 | 703 | |
699 | 704 | if (!partners.length) { |
... | ... | @@ -731,9 +736,11 @@ function _initProbe() { |
731 | 736 | } |
732 | 737 | |
733 | 738 | function isAFriend(partner) { |
739 | + if (!matrix.friends) { matrix.friends = []; }; | |
740 | + | |
734 | 741 | try { |
735 | 742 | partner = removeResourceFromJid(partner = partner.trim().toLowerCase()); |
736 | - return (friendList.indexOf(partner) >= 0); | |
743 | + return (matrix.friends.indexOf(partner) >= 0); | |
737 | 744 | } |
738 | 745 | catch(e) { |
739 | 746 | logger.warn('Exception saat pengecekan isAFriend', {partner: partner, err: e}); |
... | ... | @@ -742,9 +749,17 @@ function isAFriend(partner) { |
742 | 749 | } |
743 | 750 | |
744 | 751 | function addFriend(partner) { |
752 | + if (!matrix.friends) { matrix.friends = []; }; | |
753 | + | |
745 | 754 | partner = removeResourceFromJid(partner.trim().toLowerCase()); |
755 | + | |
756 | + if (isAFriend(partner)) { | |
757 | + logger.verbose('Partner is already a friend, skip adding friend', {partner: partner}); | |
758 | + return; | |
759 | + } | |
760 | + | |
746 | 761 | logger.verbose('Adding to friendList', {partner: partner}) |
747 | - friendList.push(partner); | |
762 | + matrix.friends.push(partner); | |
748 | 763 | |
749 | 764 | if (imAdaptor.addFriend) { |
750 | 765 | imAdaptor.addFriend(partner); |