Commit 6d646d176e929a8fd73c3274142efcb3bcd55ea1

Authored by Adhidarma Hadiwinoto
1 parent a329554618
Exists in master

restrukturisasi manajemen friendlist

Showing 1 changed file with 24 additions and 9 deletions Side-by-side Diff

... ... @@ -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);