• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

opensrp / opensrp-client-core / #182

08 Aug 2024 12:55PM UTC coverage: 68.316% (-0.08%) from 68.395%
#182

Pull #925

github

web-flow
Merge 0883be0a0 into 4fcf06cf5
Pull Request #925: migrate SyncserviceJob to work manager

18308 of 26799 relevant lines covered (68.32%)

0.68 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.8
opensrp-core/src/main/java/org/smartregister/view/fragment/SecuredFragment.java
1
package org.smartregister.view.fragment;
2

3
import android.content.Intent;
4
import android.os.Bundle;
5
import androidx.annotation.VisibleForTesting;
6
import androidx.fragment.app.Fragment;
7
import android.view.MenuItem;
8

9
import com.google.gson.Gson;
10
import com.google.gson.reflect.TypeToken;
11

12
import org.smartregister.AllConstants;
13
import org.smartregister.Context;
14
import org.smartregister.CoreLibrary;
15
import org.smartregister.R;
16
import org.smartregister.event.Event;
17
import org.smartregister.event.Listener;
18
import org.smartregister.util.Utils;
19
import org.smartregister.view.activity.DrishtiApplication;
20
import org.smartregister.view.activity.FormActivity;
21
import org.smartregister.view.activity.MicroFormActivity;
22
import org.smartregister.view.activity.SecuredActivity;
23
import org.smartregister.view.controller.ANMController;
24
import org.smartregister.view.controller.FormController;
25
import org.smartregister.view.controller.NavigationController;
26

27
import java.util.Map;
28

29

30
/**
31
 * Created by koros on 10/12/15.
32
 */
33
public abstract class SecuredFragment extends Fragment {
1✔
34

35
    protected Listener<Boolean> logoutListener;
36
    protected FormController formController;
37
    protected ANMController anmController;
38
    protected NavigationController navigationController;
39
    private String metaData;
40
    private boolean isPaused;
41

42
    @Override
43
    public void onCreate(Bundle savedInstanceState) {
44
        super.onCreate(savedInstanceState);
1✔
45

46
        logoutListener = data -> {
1✔
47
            if (getActivity() != null && !getActivity().isFinishing()) {
×
48
                getActivity().finish();
×
49
            }
50
        };
×
51
        Event.ON_LOGOUT.addListener(logoutListener);
1✔
52

53
        if (context().IsUserLoggedOut()) {
1✔
54
            DrishtiApplication application = (DrishtiApplication) this.getActivity()
1✔
55
                    .getApplication();
1✔
56
            application.logoutCurrentUser();
1✔
57
            return;
1✔
58
        }
59
        if (getActivity() instanceof SecuredActivity) {
1✔
60
            formController = new FormController((SecuredActivity) getActivity());
1✔
61
        }
62
        anmController = context().anmController();
1✔
63
        navigationController = new NavigationController(getActivity(), anmController);
1✔
64
        onCreation();
1✔
65
    }
1✔
66

67
    @Override
68
    public void onResume() {
69
        super.onResume();
1✔
70
        if (context().IsUserLoggedOut()) {
1✔
71
            DrishtiApplication application = (DrishtiApplication) this.getActivity()
1✔
72
                    .getApplication();
1✔
73
            application.logoutCurrentUser();
1✔
74
            return;
1✔
75
        }
76

77
        onResumption();
1✔
78
        isPaused = false;
1✔
79
    }
1✔
80

81
    @Override
82
    public void onPause() {
83
        super.onPause();
1✔
84
        isPaused = true;
1✔
85
    }
1✔
86

87
    @Override
88
    public boolean onOptionsItemSelected(MenuItem item) {
89
        int i = item.getItemId();
1✔
90

91
        if (i == R.id.switchLanguageMenuItem) {
1✔
92

93
            String newLanguagePreference = context().userService().switchLanguagePreference();
1✔
94
            showToastNotification(R.string.language_change_prepend_message + " " + newLanguagePreference + ". " + R.string.language_change_append_message + ".");
1✔
95

96
            return super.onOptionsItemSelected(item);
1✔
97
        } else {
98
            return super.onOptionsItemSelected(item);
1✔
99
        }
100
    }
101

102
    public void logoutUser() {
103
        context().userService().logout();
1✔
104
    }
1✔
105

106
    protected abstract void onCreation();
107

108
    protected abstract void onResumption();
109

110
    public void startFormActivity(String formName, String entityId, String metaData) {
111
        launchForm(formName, entityId, metaData, FormActivity.class);
1✔
112
    }
1✔
113

114
    public void startMicroFormActivity(String formName, String entityId, String metaData) {
115
        launchForm(formName, entityId, metaData, MicroFormActivity.class);
1✔
116
    }
1✔
117

118
    private void launchForm(String formName, String entityId, String metaData, Class formType) {
119
        this.metaData = metaData;
1✔
120

121
        Intent intent = new Intent(getActivity(), formType);
1✔
122
        intent.putExtra(AllConstants.FORM_NAME_PARAM, formName);
1✔
123
        intent.putExtra(AllConstants.ENTITY_ID_PARAM, entityId);
1✔
124
        addFieldOverridesIfExist(intent);
1✔
125
        startActivityForResult(intent, AllConstants.FORM_SUCCESSFULLY_SUBMITTED_RESULT_CODE);
1✔
126
    }
1✔
127

128
    private void addFieldOverridesIfExist(Intent intent) {
129
        if (hasMetadata()) {
1✔
130
            Map<String, String> metaDataMap = new Gson()
1✔
131
                    .fromJson(this.metaData, new TypeToken<Map<String, String>>() {
1✔
132
                    }.getType());
1✔
133
            if (metaDataMap.containsKey(AllConstants.FIELD_OVERRIDES_PARAM)) {
1✔
134
                intent.putExtra(AllConstants.FIELD_OVERRIDES_PARAM, metaDataMap.get(AllConstants.FIELD_OVERRIDES_PARAM));
1✔
135
            }
136
        }
137
    }
1✔
138

139
    private boolean hasMetadata() {
140
        return this.metaData != null && !this.metaData.equalsIgnoreCase("undefined");
1✔
141
    }
142

143
    protected Context context() {
144
        return CoreLibrary.getInstance().context().updateApplicationContext(this.getActivity().getApplicationContext());
1✔
145
    }
146

147
    public boolean isPaused() {
148
        return isPaused;
1✔
149
    }
150

151
    @VisibleForTesting
152
    protected void showToastNotification(String message) {
153
        Utils.showShortToast(getActivity(), message);
×
154
    }
×
155
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc