Subversion Repositories SmartDukaan

Rev

Rev 14792 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
16080 manas 3
import android.app.Fragment;
14792 manas 4
import android.app.ProgressDialog;
5
import android.content.Context;
6
import android.content.Intent;
7
import android.content.SharedPreferences;
8
import android.graphics.Bitmap;
9
import android.net.ConnectivityManager;
10
import android.net.Uri;
11
import android.os.AsyncTask;
12
import android.os.Bundle;
13
import android.util.Log;
14
import android.view.KeyEvent;
15
import android.view.LayoutInflater;
16
import android.view.View;
17
import android.view.ViewGroup;
16080 manas 18
import android.webkit.CookieManager;
19
import android.webkit.CookieSyncManager;
14792 manas 20
import android.webkit.HttpAuthHandler;
21
import android.webkit.WebView;
22
import android.webkit.WebViewClient;
23
 
24
import com.mixpanel.android.mpmetrics.MixpanelAPI;
25
import com.saholic.profittill.Constants.ProfitTillConstants;
26
import com.saholic.profittill.R;
27
import com.testin.agent.TestinAgent;
28
 
29
import org.apache.http.HttpResponse;
30
import org.apache.http.NameValuePair;
31
import org.apache.http.client.ClientProtocolException;
32
import org.apache.http.client.HttpClient;
33
import org.apache.http.client.entity.UrlEncodedFormEntity;
34
import org.apache.http.client.methods.HttpPost;
35
import org.apache.http.entity.StringEntity;
36
import org.apache.http.impl.client.DefaultHttpClient;
37
import org.apache.http.message.BasicNameValuePair;
38
import org.json.JSONArray;
39
import org.json.JSONException;
40
import org.json.JSONObject;
41
 
42
import java.io.IOException;
43
import java.text.SimpleDateFormat;
44
import java.util.ArrayList;
45
import java.util.Date;
46
 
47
public class PreferencesFragment extends Fragment {
48
    WebView preferencesWebView;
49
    SharedPreferences userData;
50
    SharedPreferences apiData;
51
    SharedPreferences.Editor userDataEditor;
52
    SharedPreferences.Editor apiSettingsEditor;
53
    @Override
54
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
55
                             Bundle savedInstanceState) {
56
 
57
        View rootView = inflater.inflate(R.layout.fragment_preferences, container, false);
58
        TestinAgent.init(getActivity());
59
        MixpanelAPI mixpanel = MixpanelAPI.getInstance(getActivity(), ProfitTillConstants.MIX_PANEL_TOKEN);
60
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
61
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
62
        userDataEditor = userData.edit();
63
        apiSettingsEditor = apiData.edit();
16080 manas 64
        String url=apiData.getString("preferences.url", null);;
65
        String id = userData.getString("id", null);
66
        String  landingUrl;
67
        if(userData.getString("preferences","false").equalsIgnoreCase("true")) {
68
            landingUrl =url+"?user_id="+id+"&firsttime=1";
69
        }else {
70
            landingUrl=url+"?user_id="+id;
71
        }
14792 manas 72
        TestinAgent.setUserInfo(userData.getString("id", ""));
73
        JSONObject props = new JSONObject();
74
        try {
75
            mixpanel.identify(userData.getString("id",null));
76
            props.put("Screen", "My Preferences");
77
            mixpanel.track("My Preferences", props);
78
        } catch (JSONException e) {
79
            e.printStackTrace();
80
        }
81
 
82
        if(isInternetOn()) {
83
            WebClientClass webViewClient = new WebClientClass();
84
            preferencesWebView  = (WebView)rootView.findViewById(R.id.preferencesWebView);
85
            preferencesWebView.setClickable(true);
86
            preferencesWebView.setFocusableInTouchMode(true);
87
            preferencesWebView.getSettings().setJavaScriptEnabled(true);
88
            preferencesWebView.getSettings().setBuiltInZoomControls(true);
16080 manas 89
            if(Uri.parse(landingUrl).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
90
                CookieSyncManager.createInstance(getActivity());
91
                CookieManager cookieManager1 = CookieManager.getInstance();
92
                cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
93
                cookieManager1.setCookie(url, "walletAuthentication=true");
94
                cookieManager1.setCookie(url, "shopcluesActive=true");
95
            }
96
            preferencesWebView.loadUrl(landingUrl);
14792 manas 97
            preferencesWebView.setWebViewClient(webViewClient);
98
        }
99
        else{
100
            SearchFragment nextFrag= new SearchFragment();
101
            Bundle args = new Bundle();
102
            args.putString("finishingurl", landingUrl);
103
            args.putString("fragmentNumber", "12");
104
            nextFrag.setArguments(args);
105
            getActivity().getFragmentManager().beginTransaction()
106
                    .replace(R.id.frame_container, nextFrag)
107
                    .addToBackStack(null)
108
                    .commit();
109
        }
110
 
111
        return rootView;
112
    }
113
 
114
    @Override
115
    public void onViewCreated(View view, Bundle savedInstanceState) {
116
        super.onViewCreated(view, savedInstanceState);
117
    }
118
 
119
    JSONObject obj;
120
    public class WebClientClass extends WebViewClient {
121
        ProgressDialog pd = null;
122
 
123
        @Override
124
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
125
            if(url.equalsIgnoreCase("http://m.saholic.com")){
126
                pd = new ProgressDialog(getActivity());
127
                pd.setTitle("Please wait");
128
                pd.setMessage("Loading..");
129
                pd.show();
130
            }
131
            super.onPageStarted(view, url, favicon);
132
            obj = new JSONObject();
133
 
134
            try {
135
                JSONObject j = new JSONObject();
136
                JSONArray jsArray = new JSONArray();
137
                j.put("url",url);
138
                j.put("user_id",userData.getString("id",null));
139
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
140
                jsArray.put(j);
141
                obj.put("pushdata",jsArray);
142
            } catch (JSONException e) {
143
                e.printStackTrace();
144
            }
145
            new pushData().execute();
146
        }
147
        @Override
148
        public void onPageFinished(WebView view, String url) {
149
            if(url.equalsIgnoreCase("http://m.saholic.com")) {
150
                pd.dismiss();
151
            }
152
 
153
            view.setOnKeyListener(new View.OnKeyListener()
154
            {
155
                @Override
156
                public boolean onKey(View v, int keyCode, KeyEvent event)
157
                {
158
                    if(event.getAction() == KeyEvent.ACTION_DOWN)
159
                    {
160
                        WebView webView = (WebView) v;
161
 
162
                        switch(keyCode)
163
                        {
164
                            case KeyEvent.KEYCODE_BACK:
165
                                if(webView.canGoBack())
166
                                {
167
                                    webView.goBack();
168
                                    return true;
169
                                }
170
                                else{
171
                                    Intent i = new Intent(getActivity(),MainActivity.class);
172
                                    i.putExtra("displayView","0");
173
                                    startActivity(i);
174
                                }
175
                                break;
176
                        }
177
                    }
178
 
179
                    return false;
180
                }
181
            });
182
            super.onPageFinished(view, url);
183
        }
184
        @Override
185
        public void onReceivedHttpAuthRequest(WebView view,
186
                                              HttpAuthHandler handler, String host, String realm) {
187
 
188
            handler.proceed("dtr", "dtr18Feb2015");
189
 
190
        }
16080 manas 191
 
192
        @Override
193
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
194
            super.shouldOverrideUrlLoading(view, url);
195
 
196
            if(url.contains(apiData.getString("mobile.website.url",""))){
197
                Intent i = new Intent(getActivity(),MainActivity.class);
198
                i.putExtra("displayView","0");
199
                startActivity(i);
200
            }
201
 
202
            return false;
203
        }
14792 manas 204
    }
205
    @Override
206
    public void onResume() {
207
        super.onResume();
208
        getView().setFocusableInTouchMode(true);
209
        getView().requestFocus();
210
        getView().setOnKeyListener(new View.OnKeyListener() {
211
            @Override
212
            public boolean onKey(View v, int keyCode, KeyEvent event) {
213
 
214
                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
215
                    Intent i = new Intent(getActivity(), MainActivity.class);
216
                    i.putExtra("displayView", "0");
217
                    startActivity(i);
218
                    return true;
219
 
220
                }
221
                return false;
222
            }
223
        });
224
    }
225
 
226
    class pushData extends AsyncTask<String, Integer, String> {
227
 
228
        @Override
229
        protected void onPreExecute() {
230
            super.onPreExecute();
231
            Log.e("Push Service", "Pre execute");
232
        }
233
 
234
        @Override
235
        protected String doInBackground(String... arg0) {
236
            HttpClient httpclient = new DefaultHttpClient();
237
            try {
238
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
239
                nameValuePairs.add(new BasicNameValuePair("pushdata",obj.toString()));
240
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
241
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
242
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
243
                System.out.println(obj.toString());
244
                StringEntity se = new StringEntity(obj.toString());
245
                HttpResponse response = httpclient.execute(httppost);
246
                int status = response.getStatusLine().getStatusCode();
247
 
248
                if(status == 200){
249
                    System.out.println("ResponseCode of record: "+ status + " is " + status);
250
                    return "success";
251
                } else {
252
                    Log.d("ResponseCode",status+"");
253
                    System.out.println(" NOT Transfered");
254
                    return "failure";
255
                }
256
 
257
            } catch (ClientProtocolException e) {
258
                return "failure";
259
            } catch (IOException e) {
260
                return "failure";
261
            }
262
        }
263
 
264
        @Override
265
        protected void onPostExecute(String result) {
266
            super.onPostExecute(result);
267
        }
268
    }
269
 
270
    public final boolean isInternetOn() {
271
 
272
        ConnectivityManager connec =
273
                (ConnectivityManager)getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
274
 
275
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
276
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
277
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
278
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
279
            return true;
280
 
281
        } else if (
282
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
283
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
284
 
285
            return false;
286
        }
287
        return false;
288
    }
289
}