summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
blob: 331b98a337be6303be59a717f8c459a75a0c3096 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package org.fox.ttrss;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;

import com.google.android.material.color.DynamicColors;

import org.acra.ACRA;
import org.acra.ReportField;
import org.acra.config.CoreConfigurationBuilder;
import org.acra.config.DialogConfigurationBuilder;
import org.acra.config.MailSenderConfigurationBuilder;
import org.acra.data.StringFormat;
import org.fox.ttrss.types.Article;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

public class Application extends android.app.Application {

    private static Application m_singleton;

    private String m_sessionId;
    private int m_apiLevel;
    public LinkedHashMap<String, String> m_customSortModes = new LinkedHashMap<>();
    ConnectivityManager m_cmgr;
    ArticleModel m_articleModel;

    public static Application getInstance() {
        return m_singleton;
    }

    public static List<Article> getArticles() {
        return getInstance().m_articleModel.getArticles().getValue();
    }

    public static ArticleModel getArticlesModel() {
        return getInstance().m_articleModel;
    }

    @Override
    public final void onCreate() {
        super.onCreate();

        DynamicColors.applyToActivitiesIfAvailable(this);

        m_singleton = this;
        m_cmgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        m_articleModel = new ArticleModel(this);
    }

    public String getSessionId() {
        return m_sessionId;
    }

    public void setSessionId(String sessionId) {
        m_sessionId = sessionId;
    }

    public int getApiLevel() {
        return m_apiLevel;
    }

    public void setApiLevel(int apiLevel) {
        m_apiLevel = apiLevel;
    }

    public void save(Bundle out) {

        out.setClassLoader(getClass().getClassLoader());
        out.putString("gs:sessionId", m_sessionId);
        out.putInt("gs:apiLevel", m_apiLevel);
        out.putSerializable("gs:customSortTypes", m_customSortModes);
    }

    /**
     * @noinspection unchecked
     */
    public void load(Bundle in) {
        if (in != null) {
            m_sessionId = in.getString("gs:sessionId");
            m_apiLevel = in.getInt("gs:apiLevel");

            HashMap<String, String> tmp = (HashMap<String, String>) in.getSerializable("gs:customSortTypes");

            m_customSortModes.clear();
            m_customSortModes.putAll(tmp);
        }
    }

    public boolean isWifiConnected() {
        NetworkInfo wifi = m_cmgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (wifi != null)
            return wifi.isConnected();

        return false;
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);

        if (!BuildConfig.DEBUG)
            ACRA.init(this, new CoreConfigurationBuilder()
                    .withBuildConfigClass(BuildConfig.class)
                    .withReportContent(ReportField.APP_VERSION_NAME, ReportField.APP_VERSION_CODE, ReportField.STACK_TRACE)
                    .withReportFormat(StringFormat.KEY_VALUE_LIST)
                    .withPluginConfigurations(
                            new DialogConfigurationBuilder()
                                    .withText(getString(R.string.crash_dialog_text_email))
                                    .withResTheme(R.style.Theme_AppCompat_Dialog)
                                    .build(),
                            new MailSenderConfigurationBuilder()
                                    .withMailTo("cthulhoo+ttrss-acra@gmail.com")
                                    .withReportAsFile(true)
                                    .withReportFileName("crash.txt")
                                    .build()
                    )
                    .build());
    }
}