Refactoring in app module
This commit is contained in:
parent
9882d159be
commit
b3b05a42b6
|
@ -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>
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue