@@ -35,11 +35,9 @@
import com.bitdubai.fermat_cht_api.layer.actor_connection.interfaces.ChatActorConnectionSearch;
import com.bitdubai.fermat_cht_api.layer.actor_connection.utils.ChatActorConnection;
import com.bitdubai.fermat_cht_api.layer.actor_connection.utils.ChatLinkedActorIdentity;
import com.bitdubai.fermat_cht_api.layer.actor_network_service.exceptions.CantListChatException;
import com.bitdubai.fermat_cht_api.layer.actor_network_service.interfaces.ChatManager;
import com.bitdubai.fermat_cht_api.layer.actor_network_service.interfaces.ChatSearch;
import com.bitdubai.fermat_cht_api.layer.middleware.enums.ActionState;
import com.bitdubai.fermat_cht_api.layer.middleware.event.IncomingChatMessageNotificationEvent;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.ActionOnline;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.Chat;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.GroupMember;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.Message;
@@ -807,10 +805,10 @@ public boolean checkWritingStatus(UUID chatId) throws CantGetWritingStatus {
public void activeOnlineStatus(String remotePublicKey) throws CantGetOnlineStatus {
try {
if(remotePublicKey==null) {
List<String> publicKeys = chatMiddlewareDatabaseDao.getOnlineActions();
if(publicKeys==null || publicKeys.isEmpty()) return;
for(String publicKey: publicKeys) {
chatMiddlewareDatabaseDao.saveOnlineAction(publicKey, ActionState.NONE);
List<ActionOnline> actionOnlines = chatMiddlewareDatabaseDao.getOnlineActionsByActiveState();
if(actionOnlines==null || actionOnlines.isEmpty()) return;
for(ActionOnline actionOnline: actionOnlines) {
chatMiddlewareDatabaseDao.saveOnlineActionState(actionOnline.getPublicKey(), ActionState.NONE);
}
return;
}
@@ -819,7 +817,7 @@ public void activeOnlineStatus(String remotePublicKey) throws CantGetOnlineStatu
System.out.println("12345 onlineState " + onlineState);
if(onlineState != null && onlineState == ActionState.ACTIVE) return;

chatMiddlewareDatabaseDao.saveOnlineAction(remotePublicKey, ActionState.ACTIVE);
chatMiddlewareDatabaseDao.saveOnlineActionState(remotePublicKey, ActionState.ACTIVE);

} catch (CantSaveActionException e) {
throw new CantGetOnlineStatus(
@@ -833,28 +831,16 @@ public void activeOnlineStatus(String remotePublicKey) throws CantGetOnlineStatu

public boolean checkOnlineStatus(String remotePublicKey) throws CantGetOnlineStatus {
try {
Chat chat = chatMiddlewareDatabaseDao.getChatByRemotePublicKey(remotePublicKey);
if (chat!=null)
return chat.isOnline();
ActionOnline onlineAction = chatMiddlewareDatabaseDao.getOnlineActionByPk(remotePublicKey);
if (onlineAction!=null)
return onlineAction.getValue();
else return false;
} catch (CantGetChatException e) {
throw new CantGetOnlineStatus(
e,
"Something went wrong",
"");
} catch (DatabaseOperationException e) {
} catch (CantSaveActionException e) {
throw new CantGetOnlineStatus(
e,
"Something went wrong",
"");
}


// ChatSearch chatActorSearch = chatActorNetworkServiceManager.getSearch();
// System.out.println("12345 CHECKING ONLINE STATUS");

// return chatActorSearch.getResult(remotePublicKey) != null;

}


@@ -41,6 +41,7 @@
import com.bitdubai.fermat_cht_api.layer.actor_network_service.interfaces.ChatManager;
import com.bitdubai.fermat_cht_api.layer.actor_network_service.interfaces.ChatSearch;
import com.bitdubai.fermat_cht_api.layer.middleware.enums.ActionState;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.ActionOnline;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.Chat;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.GroupMember;
import com.bitdubai.fermat_cht_api.layer.middleware.interfaces.Message;
@@ -298,7 +299,7 @@ private void doTheMainTask() throws
checkOnlineStatus();
}
if(discoverIteration == 2){
resetOnineStatus();
resetOnlineStatus();
}
discoverIteration++;
if (discoverIteration == DISCOVER_ITERATION_LIMIT) {
@@ -511,50 +512,34 @@ public void checkOnlineStatus() throws
errorManager,
pluginFileSystem);

List<String> publicKeys = chatMiddlewareDatabaseDao.getOnlineActions();
List<ActionOnline> onlineActions = chatMiddlewareDatabaseDao.getOnlineActionsByActiveState();

if(publicKeys==null || publicKeys.isEmpty()) return;
if(onlineActions==null || onlineActions.isEmpty()) return;

System.out.println("12345 CHECKING ONLINE STATUS");

ChatSearch chatActorSearch = chatActorNetworkServiceManager.getSearch();

for(String publicKey : publicKeys){
Chat chat = chatMiddlewareDatabaseDao.getChatByRemotePublicKey(publicKey);
if(chat==null) continue;
boolean isOnline = chatActorSearch.getResult(publicKey) != null;
for(ActionOnline actionOnline : onlineActions){
boolean isOnline = chatActorSearch.getResult(actionOnline.getPublicKey()) != null;
System.out.println("12345 is online "+isOnline);
chat.setIsOnline(isOnline);
chatMiddlewareDatabaseDao.saveChat(chat);
chatMiddlewareDatabaseDao.saveOnlineActionValue(actionOnline.getPublicKey(), isOnline);
}

broadcaster.publish(BroadcasterType.UPDATE_VIEW, BROADCAST_CODE);

} catch (CantSaveChatException e) {
throw new CantGetPendingTransactionException(
e,
"Checking the incoming status pending transactions",
"Cannot update message from database"
);
} catch (DatabaseOperationException e) {
throw new CantGetPendingTransactionException(
e,
"Checking the incoming status pending transactions",
"Cannot update message from database"
);
} catch (CantGetChatException e) {
} catch (CantGetPendingActionListException e) {
throw new CantGetPendingTransactionException(
e,
"Checking the incoming status pending transactions",
"Cannot update message from database"
);
} catch (CantGetPendingActionListException e) {
} catch (CantListChatException e) {
throw new CantGetPendingTransactionException(
e,
"Checking the incoming status pending transactions",
"Cannot update message from database"
);
} catch (CantListChatException e) {
} catch (CantSaveActionException e) {
throw new CantGetPendingTransactionException(
e,
"Checking the incoming status pending transactions",
@@ -615,7 +600,7 @@ public void resetWritingStatus(){
}
}

public void resetOnineStatus(){
public void resetOnlineStatus(){
try {
chatMiddlewareDatabaseDao = new ChatMiddlewareDatabaseDao(
pluginDatabaseSystem,
@@ -627,25 +612,22 @@ public void resetOnineStatus(){
boolean changes=false;


List<Chat> chats = null;
chats = chatMiddlewareDatabaseDao.getChatListByOnline();
List<ActionOnline> actionOnlines = null;
actionOnlines = chatMiddlewareDatabaseDao.getOnlineActionsByOnline();

if(chats == null || chats.isEmpty()) return;
if(actionOnlines == null || actionOnlines.isEmpty()) return;

for(Chat chat : chats){
chat.setIsOnline(false);
chatMiddlewareDatabaseDao.saveChat(chat);
for(ActionOnline actionOnline : actionOnlines){
chatMiddlewareDatabaseDao.saveOnlineActionValue(actionOnline.getPublicKey(), false);
changes = true;
}

if(changes)
broadcaster.publish(BroadcasterType.UPDATE_VIEW, BROADCAST_CODE);

} catch (DatabaseOperationException e) {
e.printStackTrace();
} catch (CantGetChatException e) {
} catch (CantGetPendingActionListException e) {
e.printStackTrace();
} catch (CantSaveChatException e) {
} catch (CantSaveActionException e) {
e.printStackTrace();
}
}