Refactoring in app module

This commit is contained in:
Paul Schaub 2019-12-09 13:50:26 +01:00
parent 9882d159be
commit b3b05a42b6
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
19 changed files with 50 additions and 69 deletions

View File

@ -35,7 +35,7 @@
<activity
android:name=".ui.login.LoginActivity"
android:label="@string/title_activity_login" />
<service android:name=".service.XmppConnectionService" />
<service android:name=".service.MercuryConnectionService" />
</application>
</manifest>

View File

@ -12,7 +12,7 @@ import android.os.Build;
import org.mercury_im.messenger.di.component.AppComponent;
import org.mercury_im.messenger.di.component.DaggerAppComponent;
import org.mercury_im.messenger.di.module.AppModule;
import org.mercury_im.messenger.service.XmppConnectionService;
import org.mercury_im.messenger.service.MercuryConnectionService;
import org.mercury_im.messenger.util.AbstractActivityLifecycleCallbacks;
import java.util.concurrent.atomic.AtomicBoolean;
@ -21,8 +21,6 @@ import java.util.concurrent.atomic.AtomicInteger;
public class MercuryImApplication extends Application {
public static final String TAG = "Mercury-IM";
static {
// Initialize Smack etc.
// new MercuryConfiguration();
@ -54,9 +52,9 @@ public class MercuryImApplication extends Application {
initializeNotificationChannels(this);
Intent serviceIntent = new Intent(getApplicationContext(), XmppConnectionService.class);
Intent serviceIntent = new Intent(getApplicationContext(), MercuryConnectionService.class);
serviceIntent.setAction(XmppConnectionService.ACTION_START);
serviceIntent.setAction(MercuryConnectionService.ACTION_START);
if (Build.VERSION.SDK_INT < 26) {
startService(serviceIntent);
} else {

View File

@ -1,11 +1,10 @@
package org.mercury_im.messenger.di.component;
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.data.di.MappingModule;
import org.mercury_im.messenger.data.di.RepositoryModule;
import org.mercury_im.messenger.di.module.AndroidPersistenceModule;
import org.mercury_im.messenger.di.module.AppModule;
import org.mercury_im.messenger.service.XmppConnectionService;
import org.mercury_im.messenger.service.MercuryConnectionService;
import org.mercury_im.messenger.ui.MainActivity;
import org.mercury_im.messenger.ui.chat.ChatActivity;
import org.mercury_im.messenger.ui.chat.ChatInputFragment;
@ -67,6 +66,6 @@ public interface AppComponent {
// Services
void inject(XmppConnectionService service);
void inject(MercuryConnectionService service);
}

View File

@ -6,7 +6,6 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
@ -22,36 +21,16 @@ import org.mercury_im.messenger.ui.MainActivity;
* Started, Bound Service, which is responsible for managing {@link XMPPConnection XMPPConnections}
* affiliated with registered accounts.
*/
public class XmppConnectionService extends Service {
private static final String TAG = MercuryImApplication.TAG;
public class MercuryConnectionService extends Service {
private static final String APP = "org.mercury-im.messenger";
private static final String SERVICE = APP + ".XmppConnectionService";
private static final String SERVICE = APP + ".MercuryConnectionService";
private static final String ACTION = SERVICE + ".ACTION";
private static final String EVENT = SERVICE + ".EVENT";
private static final String EXTRA = SERVICE + ".EXTRA";
private static final String STATUS = SERVICE + ".STATUS";
// ACTIONS
public static final String ACTION_START = ACTION + ".START";
public static final String ACTION_STOP = ACTION + ".STOP";
public static final String ACTION_CONNECT = ACTION + ".CONNECT";
public static final String ACTION_DISCONNECT = ACTION + ".DISCONNECT";
public static final String ACTION_PING = ACTION + ".PING";
// EVENTS
public static final String EVENT_INCOMING_MESSAGE = EVENT + ".INCOMING_MESSAGE";
public static final String EVENT_OUTGOING_MESSAGE = EVENT + ".OUTGOING_MESSAGE";
// EXTRAS
public static final String EXTRA_CONFIGURATION = EXTRA + ".CONFIGURATION";
public static final String EXTRA_ACCOUNT_ID = EXTRA + ".ACCOUNT_ID";
// STATUSES
public static final String STATUS_SUCCESS = STATUS + ".SUCCESS";
public static final String STATUS_FAILURE = STATUS + ".FAILURE";
@NonNull
@ -63,27 +42,31 @@ public class XmppConnectionService extends Service {
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate()");
MercuryImApplication.getApplication().getAppComponent().inject(this);
beginLifecycleOfPingManager();
}
// Begin life cycle of Ping Manager.
// The Manager will automatically detect newly created connections and ping the server
// every half hour if necessary.
/**
* PingManager will ensure the XMPP connection is kept alive.
* TODO: Move out of this service/module
*/
private void beginLifecycleOfPingManager() {
ServerPingWithAlarmManager.onCreate(this);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy()");
// End life cycle of Ping Manager.
endLifecycleOfPingManager();
}
private void endLifecycleOfPingManager() {
ServerPingWithAlarmManager.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand(" + intent + ")");
if (intent == null) {
startAndDisplayForegroundNotification();
} else {
@ -107,7 +90,6 @@ public class XmppConnectionService extends Service {
}
public void startAndDisplayForegroundNotification() {
Log.d(TAG, "startAndDisplayForegroundNotification()");
Notification notification = getForegroundNotification(getApplicationContext());
startForeground(Notifications.FOREGROUND_SERVICE_ID, notification);
@ -126,13 +108,13 @@ public class XmppConnectionService extends Service {
public class Binder extends android.os.Binder {
private final XmppConnectionService service;
private final MercuryConnectionService service;
public Binder(XmppConnectionService service) {
public Binder(MercuryConnectionService service) {
this.service = service;
}
public XmppConnectionService getService() {
public MercuryConnectionService getService() {
return service;
}
}

View File

@ -1,6 +1,5 @@
package org.mercury_im.messenger.ui.chat;
import static org.mercury_im.messenger.MercuryImApplication.TAG;
import android.content.Context;
import android.os.Bundle;
@ -14,7 +13,7 @@ import android.widget.ImageButton;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import androidx.lifecycle.ViewModelProvider;
import butterknife.BindView;
import butterknife.ButterKnife;
@ -48,7 +47,6 @@ public class ChatInputFragment extends Fragment implements View.OnClickListener
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
View view = inflater.inflate(R.layout.view_compose, container, false);
ButterKnife.bind(this, view);
return view;
@ -57,7 +55,7 @@ public class ChatInputFragment extends Fragment implements View.OnClickListener
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = ViewModelProviders.of(this).get(ChatInputViewModel.class);
mViewModel = new ViewModelProvider(this).get(ChatInputViewModel.class);
observeViewModel(mViewModel);
}
@ -97,7 +95,6 @@ public class ChatInputFragment extends Fragment implements View.OnClickListener
@Override
@OnClick({R.id.btn_send, R.id.btn_media, R.id.btn_emoji})
public void onClick(View view) {
Log.d(TAG, "onClick!");
switch (view.getId()) {
// Add media
case R.id.btn_media:

View File

@ -1,6 +1,5 @@
package org.mercury_im.messenger.ui.chatlist;
import static org.mercury_im.messenger.MercuryImApplication.TAG;
import android.content.Context;
import android.os.Bundle;
@ -13,7 +12,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
@ -21,6 +20,7 @@ import com.google.android.material.floatingactionbutton.ExtendedFloatingActionBu
import butterknife.BindView;
import butterknife.ButterKnife;
import org.mercury_im.messenger.Messenger;
import org.mercury_im.messenger.R;
public class ChatListFragment extends Fragment {
@ -61,13 +61,13 @@ public class ChatListFragment extends Fragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
viewModel = ViewModelProviders.of(getActivity()).get(ChatListViewModel.class);
viewModel = new ViewModelProvider(getActivity()).get(ChatListViewModel.class);
viewModel.getChats().observe(this, chatModels -> {
if (chatModels == null) {
Log.d(TAG, "Displaying null chats");
Log.d(Messenger.TAG, "Displaying null chats");
return;
}
Log.d(TAG, "Displaying " + chatModels.size() + " chats");
Log.d(Messenger.TAG, "Displaying " + chatModels.size() + " chats");
recyclerViewAdapter.setModels(chatModels);
});
}

View File

@ -63,7 +63,6 @@ public class AccountsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(MercuryImApplication.TAG, "AccountsFragment.onCreateView");
View view = inflater.inflate(R.layout.fragment_account_list, container, false);
ButterKnife.bind(this, view);
viewModel = new ViewModelProvider(this).get(AccountsViewModel.class);

View File

@ -12,6 +12,7 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.Messenger;
import org.mercury_im.messenger.R;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.ui.login.AccountsFragment.OnAccountListItemClickListener;
@ -74,7 +75,7 @@ public class AccountsRecyclerViewAdapter extends RecyclerView.Adapter<AccountsRe
@Override
public int getItemCount() {
Log.d(MercuryImApplication.TAG, "Accounts Item Count: " + mValues.size());
Log.d(Messenger.TAG, "Accounts Item Count: " + mValues.size());
return mValues.size();
}

View File

@ -136,7 +136,6 @@ public class LoginViewModel extends ViewModel {
insert.subscribe(new DisposableSingleObserver<Account>() {
@Override
public void onSuccess(Account inserted) {
Log.d(MercuryImApplication.TAG, "LoginActivity.loginDetailsEntered: Account " + inserted.getId() + " inserted.");
// connectionCenter.createConnection(account);
signinSuccessful.setValue(true);
}

View File

@ -3,7 +3,7 @@ package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.mapping.AccountMapping;
import org.mercury_im.messenger.data.model.AccountModel;
import org.mercury_im.messenger.data.repository.dao.AccountDao;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.util.ThreadUtils;

View File

@ -1,11 +1,9 @@
package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.mapping.AccountMapping;
import org.mercury_im.messenger.data.mapping.DirectChatMapping;
import org.mercury_im.messenger.data.mapping.PeerMapping;
import org.mercury_im.messenger.data.model.DirectChatModel;
import org.mercury_im.messenger.data.repository.dao.DirectChatDao;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.chat.DirectChat;
import org.mercury_im.messenger.entity.chat.IDirectChat;
import org.mercury_im.messenger.entity.contact.Peer;

View File

@ -3,7 +3,7 @@ package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.mapping.GroupChatMapping;
import org.mercury_im.messenger.data.model.GroupChatModel;
import org.mercury_im.messenger.data.repository.dao.GroupChatDao;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.chat.GroupChat;
import org.mercury_im.messenger.entity.chat.IGroupChat;

View File

@ -2,7 +2,7 @@ package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.mapping.PeerMapping;
import org.mercury_im.messenger.data.model.PeerModel;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.contact.IPeer;
import org.mercury_im.messenger.entity.contact.Peer;

View File

@ -13,6 +13,8 @@ import javax.inject.Inject;
public class Messenger {
public static final String TAG = "MercuryIM";
private final Map<Long, ConnectionMethod> connections = new HashMap<>();
@Inject
@ -33,4 +35,12 @@ public class Messenger {
public ConnectionMethod getConnection(Account account) {
return connections.get(account.getId());
}
public void appInUse() {
}
public void appInBackground() {
}
}

View File

@ -1,7 +1,7 @@
package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import java.util.List;

View File

@ -1,9 +1,8 @@
package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.chat.DirectChat;
import org.mercury_im.messenger.entity.contact.Peer;
import org.mercury_im.messenger.entity.message.Message;
import java.util.List;

View File

@ -2,8 +2,7 @@ package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.chat.GroupChat;
import org.mercury_im.messenger.entity.message.Message;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import java.util.List;

View File

@ -1,6 +1,6 @@
package org.mercury_im.messenger.data.repository;
import org.mercury_im.messenger.data.util.Optional;
import org.mercury_im.messenger.util.Optional;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.contact.Peer;

View File

@ -1,4 +1,4 @@
package org.mercury_im.messenger.data.util;
package org.mercury_im.messenger.util;
/**
* Since j.u.Optional is only available on Android since API lvl 24, we need this utility class.