Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

Rev 71 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 71 Rev 73
Línea 16... Línea 16...
16
import android.app.NotificationChannel;
16
import android.app.NotificationChannel;
17
import android.app.NotificationManager;
17
import android.app.NotificationManager;
18
import android.app.PendingIntent;
18
import android.app.PendingIntent;
19
import android.content.ContentResolver;
19
import android.content.ContentResolver;
20
import android.content.DialogInterface;
20
import android.content.DialogInterface;
-
 
21
import android.content.PeriodicSync;
21
import android.net.ConnectivityManager;
22
import android.net.ConnectivityManager;
22
import android.os.Build;
23
import android.os.Build;
23
import android.os.Handler;
24
import android.os.Handler;
24
import android.os.Looper;
25
import android.os.Looper;
25
import android.text.TextUtils;
26
import android.text.TextUtils;
Línea 83... Línea 84...
83
import com.cesams.twogetskills.preference.Preference;
84
import com.cesams.twogetskills.preference.Preference;
84
import com.cesams.twogetskills.receiver.ConnectivityReceiver;
85
import com.cesams.twogetskills.receiver.ConnectivityReceiver;
85
import com.cesams.twogetskills.receiver.InternalReceiver;
86
import com.cesams.twogetskills.receiver.InternalReceiver;
86
import com.cesams.twogetskills.room.ResultCount;
87
import com.cesams.twogetskills.room.ResultCount;
87
import com.cesams.twogetskills.skeleton.IReloadData;
88
import com.cesams.twogetskills.skeleton.IReloadData;
-
 
89
import com.cesams.twogetskills.sync.WorkSync;
88
import com.google.android.gms.tasks.OnCompleteListener;
90
import com.google.android.gms.tasks.OnCompleteListener;
89
import com.google.android.gms.tasks.Task;
91
import com.google.android.gms.tasks.Task;
90
import com.google.android.material.bottomnavigation.BottomNavigationView;
92
import com.google.android.material.bottomnavigation.BottomNavigationView;
91
import com.google.android.material.navigation.NavigationBarView;
93
import com.google.android.material.navigation.NavigationBarView;
92
import com.google.android.material.snackbar.Snackbar;
94
import com.google.android.material.snackbar.Snackbar;
Línea 93... Línea 95...
93
 
95
 
-
 
96
import androidx.appcompat.widget.Toolbar;
-
 
97
import androidx.work.Constraints;
-
 
98
import androidx.work.ExistingPeriodicWorkPolicy;
-
 
99
import androidx.work.NetworkType;
-
 
100
import androidx.work.PeriodicWorkRequest;
-
 
101
import androidx.work.WorkManager;
Línea 94... Línea 102...
94
import androidx.appcompat.widget.Toolbar;
102
import androidx.work.WorkRequest;
95
 
103
 
Línea 96... Línea 104...
96
import com.cesams.twogetskills.Constants;
104
import com.cesams.twogetskills.Constants;
Línea 105... Línea 113...
105
import org.json.JSONException;
113
import org.json.JSONException;
106
import org.json.JSONObject;
114
import org.json.JSONObject;
Línea 107... Línea 115...
107
 
115
 
108
import java.io.IOException;
116
import java.io.IOException;
-
 
117
import java.text.SimpleDateFormat;
109
import java.text.SimpleDateFormat;
118
import java.util.ArrayList;
110
import java.util.Calendar;
119
import java.util.Calendar;
111
import java.util.Date;
120
import java.util.Date;
112
import java.util.HashMap;
121
import java.util.HashMap;
113
import java.util.List;
122
import java.util.List;
114
import java.util.Random;
123
import java.util.Random;
-
 
124
import java.util.TimeZone;
Línea 115... Línea 125...
115
import java.util.TimeZone;
125
import java.util.concurrent.TimeUnit;
116
 
126
 
117
//import de.hdodenhof.circleimageview.CircleImageView;
127
//import de.hdodenhof.circleimageview.CircleImageView;
118
import okhttp3.Call;
128
import okhttp3.Call;
Línea 122... Línea 132...
122
import okhttp3.Request;
132
import okhttp3.Request;
123
import okhttp3.RequestBody;
133
import okhttp3.RequestBody;
124
import okhttp3.Response;
134
import okhttp3.Response;
Línea 125... Línea 135...
125
 
135
 
-
 
136
public class MainActivity extends  AppCompatActivity implements ITwoGetSkills {
126
public class MainActivity extends  AppCompatActivity implements ITwoGetSkills {
137
    /*
127
    private boolean isSyncDevice = false;
138
    private boolean isSyncDevice = false;
128
    private boolean isSyncToken = false;
139
    private boolean isSyncToken = false;
-
 
140
    private boolean isSyncBatch = false;
-
 
141
    */
129
    private boolean isSyncBatch = false;
142
    private boolean isActiveOperation = false;
130
    private boolean isForeground = false;
143
    private boolean isForeground = false;
131
    private boolean isSmartLockLoginRun = false;
144
    private boolean isSmartLockLoginRun = false;
Línea 132... Línea 145...
132
    private boolean isShowingCartelRefresh = false;
145
    private boolean isShowingCartelRefresh = false;
Línea 143... Línea 156...
143
    private boolean connected = false;
156
    private boolean connected = false;
144
    private ConnectivityReceiver mConnectivityReceiver;
157
    private ConnectivityReceiver mConnectivityReceiver;
145
    private InternalReceiver mInternalReceiver;
158
    private InternalReceiver mInternalReceiver;
146
    private ProgressBar mProgressBar;
159
    private ProgressBar mProgressBar;
147
    private Toolbar mToolbar;
160
    private Toolbar mToolbar;
148
    private Account mAccount;
161
    //private Account mAccount;
149
    private AppDatabase mAppDatabase;
162
    private AppDatabase mAppDatabase;
Línea -... Línea 163...
-
 
163
 
-
 
164
 
-
 
165
    private WorkManager mWorkManager;
Línea 150... Línea 166...
150
 
166
 
151
 
167
 
152
 
168
 
153
    ActivityResultLauncher<Intent> mLauncher = registerForActivityResult(
169
    ActivityResultLauncher<Intent> mLauncher = registerForActivityResult(
Línea 197... Línea 213...
197
 
213
 
198
            if (!TextUtils.isEmpty(preference.getDeviceToken())) {
214
            if (!TextUtils.isEmpty(preference.getDeviceToken())) {
199
                Log.e("BUG Token", "SyncRecord - FCM1");
215
                Log.e("BUG Token", "SyncRecord - FCM1");
200
                sync = new Sync(Constants.SYNC_ADAPTER_TYPE_FCM, preference.getDeviceToken());
216
                sync = new Sync(Constants.SYNC_ADAPTER_TYPE_FCM, preference.getDeviceToken());
-
 
217
                mAppDatabase.getSyncDao().insert(sync);
-
 
218
 
201
                mAppDatabase.getSyncDao().insert(sync);
219
                registerDevice(sync);
202
            }
220
            }
Línea 203... Línea 221...
203
        }
221
        }
204
 
222
 
205
        /**** CANAL DE NOTIFICACIONES **/
223
        /**** CANAL DE NOTIFICACIONES **/
Línea 206... Línea 224...
206
        createNotificationChannel();
224
        createNotificationChannel();
207
       // badgenotification= findViewById(R.id.cart_badge);
225
       // badgenotification= findViewById(R.id.cart_badge);
Línea 208... Línea 226...
208
 
226
 
Línea 209... Línea 227...
209
 
227
 
Línea 352... Línea 370...
352
                        CartelRefreshContent();
370
                        CartelRefreshContent();
Línea 353... Línea 371...
353
 
371
 
Línea 354... Línea 372...
354
                    }
372
                    }
355
 
373
 
-
 
374
            }
-
 
375
    }
-
 
376
 
-
 
377
        Constraints constraints = new Constraints.Builder()
-
 
378
                .setRequiredNetworkType(NetworkType.CONNECTED)
-
 
379
                .build();
-
 
380
 
-
 
381
        PeriodicWorkRequest mWorkRequestSync =
-
 
382
                new PeriodicWorkRequest.Builder(WorkSync.class, 15, TimeUnit.MINUTES)
-
 
383
                        // Constraints
-
 
384
                        .build();
-
 
385
 
-
 
386
        mWorkManager = WorkManager.getInstance(getApplication());
-
 
387
        mWorkManager.enqueueUniquePeriodicWork(
-
 
388
                WorkSync.class.getSimpleName(),
-
 
389
                ExistingPeriodicWorkPolicy.KEEP, //Existing Periodic Work policy
-
 
390
                mWorkRequestSync //work request
-
 
391
        );
Línea 356... Línea 392...
356
            }
392
 
Línea 357... Línea 393...
357
    }}
393
    }
358
 
394
 
Línea 899... Línea 935...
899
 
935
 
900
        if(!TextUtils.isEmpty(preference.getDeviceUuid())) {
936
        if(!TextUtils.isEmpty(preference.getDeviceUuid())) {
901
            Log.e("BUG Token", "SyncRecord - FCM1");
937
            Log.e("BUG Token", "SyncRecord - FCM1");
902
            Sync sync = new Sync(Constants.SYNC_ADAPTER_TYPE_FCM, token);
938
            Sync sync = new Sync(Constants.SYNC_ADAPTER_TYPE_FCM, token);
-
 
939
            mAppDatabase.getSyncDao().insert(sync);
-
 
940
 
903
            mAppDatabase.getSyncDao().insert(sync);
941
            registerFcm(sync);
904
        }
942
        }
Línea 1281... Línea 1319...
1281
    }
1319
    }
Línea 1282... Línea 1320...
1282
 
1320
 
1283
    @Override
1321
    @Override
1284
    public void changeTopicActive(String topicUuid)
1322
    public void changeTopicActive(String topicUuid)
1285
    {
-
 
1286
        Log.d(TAG, "changeTopicActive : " + topicUuid);
-
 
1287
       // Log.e("Guardo", "Topico en Main");
-
 
1288
 
1323
    {
1289
        preference.setTopicUuidActive(topicUuid);
-
 
1290
       // preference.setCapsuleUuidActive("");
-
 
1291
        //setNoCapsuleActive();
1324
        preference.setSourceNavigation(Constants.SOURCE_NAVIGATION_MY_CAPSULES);        preference.setTopicUuidActive(topicUuid);
1292
        preference.setSlideUuidActive("");
1325
        preference.setSlideUuidActive("");
Línea 1293... Línea 1326...
1293
        preference.save();
1326
        preference.save();
1294
 
1327
 
Línea 1295... Línea 1328...
1295
        invokeFragment(Constants.IDX_FRAGMENT_CAPSULES);
1328
        invokeFragment(Constants.IDX_FRAGMENT_CAPSULES);
1296
    }
1329
    }
1297
 
1330
 
1298
    @Override
-
 
Línea 1299... Línea 1331...
1299
    public void changeCapsuleActiveSourceNavigationMyCapsules(String topicUuid, String capsuleUuid)
1331
    @Override
1300
    {
1332
    public void changeCapsuleActiveSourceNavigationMyCapsules(String topicUuid, String capsuleUuid)
1301
        Log.d(TAG, "changeCapsuleActiveSourceNavigationMyCapsules topicUuid : " + topicUuid + " capsuleUuid : " + capsuleUuid );
1333
    {
1302
 
1334
 
Línea 1804... Línea 1836...
1804
                    }
1836
                    }
1805
                }
1837
                }
1806
            }
1838
            }
1807
        }
1839
        }
Línea 1808... Línea 1840...
1808
 
1840
 
1809
        requestExecuteSyncAdapter();
1841
        syncToServerOrCheckChanges();
Línea 1810... Línea 1842...
1810
    }
1842
    }
1811
 
1843
 
1812
    @Override
1844
    @Override
Línea 2008... Línea 2040...
2008
 
2040
 
Línea 2009... Línea 2041...
2009
                //Log.d("requestCheckChanges", "secret = " + secret);
2041
                //Log.d("requestCheckChanges", "secret = " + secret);
-
 
2042
 
-
 
2043
 
2010
 
2044
                FormBody.Builder formBodyCheckChangeBuilder = new FormBody.Builder();
2011
 
2045
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID));
2012
                FormBody.Builder formBodyCheckChangeBuilder = new FormBody.Builder();
2046
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_VARIANT_ID, String.valueOf(Configuration.VARIANT_ID));
2013
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_DEVICE_UUID, preference.getDeviceUuid());
2047
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_DEVICE_UUID, preference.getDeviceUuid());
2014
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_MAX_DATE_CHANGES, preference.getMaxDateChanges());
2048
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_MAX_DATE_CHANGES, preference.getMaxDateChanges());
Línea 2015... Línea 2049...
2015
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_IS_FOREGROUND, String.valueOf(isForeground ? 1 : 0));
2049
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_IS_FOREGROUND, String.valueOf(isForeground ? 1 : 0));
2016
                Http http = new Http(this.getCacheDir(), preference.getDeviceUuid(), secret, created, rand);
2050
                Http http = new Http(this.getCacheDir(), preference.getDeviceUuid(), secret, created, rand);
Línea 2017... Línea 2051...
2017
                OkHttpClient client = http.getHttpClient(false);
2051
                OkHttpClient client = http.getHttpClient(false);
2018
 
2052
 
2019
 
2053
 
2020
 
2054
 
Línea 2021... Línea 2055...
2021
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_MAX_IDS, String.valueOf(capsules.size()));
2055
                formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_FIELD_MAX_IDS, String.valueOf(capsules.size()));
2022
                //formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_MAX_IDS, String.valueOf(0));
2056
                //formBodyCheckChangeBuilder.add(Constants.POST_MICROLEARNING_CHECK_CHANGES_MAX_IDS, String.valueOf(0));
2023
 
2057
 
Línea 2554... Línea 2588...
2554
        } catch (JSONException e) {
2588
        } catch (JSONException e) {
2555
            Log.d(TAG, e.getMessage());
2589
            Log.d(TAG, e.getMessage());
2556
        }
2590
        }
2557
    }
2591
    }
Línea -... Línea 2592...
-
 
2592
 
2558
 
2593
 
2559
    @Override
2594
    @Override
2560
    public void requestExecuteSyncAdapter() {
2595
    public void requestExecuteSyncAdapter() {
-
 
2596
        // Pass the settings flags by inserting them in a bundle
2561
            // Pass the settings flags by inserting them in a bundle
2597
 
2562
            Bundle settingsBundle = new Bundle();
-
 
2563
            settingsBundle.putBoolean(
-
 
2564
                    ContentResolver.SYNC_EXTRAS_MANUAL, true);
2598
        Log.d(TAG, "requestExecuteSyncAdapter");
2565
            settingsBundle.putBoolean(
-
 
Línea 2566... Línea -...
2566
                    ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
-
 
2567
 
2599
        syncToServerOrCheckChanges();
Línea 2568... Línea 2600...
2568
            ContentResolver.requestSync(mAccount, Constants.AUTHORITY, settingsBundle);
2600
 
2569
    }
2601
    }
Línea 2683... Línea 2715...
2683
    public AppDatabase getDatabase() {
2715
    public AppDatabase getDatabase() {
2684
        return mAppDatabase;
2716
        return mAppDatabase;
2685
    }
2717
    }
Línea 2686... Línea 2718...
2686
 
2718
 
2687
    @Override
2719
    @Override
2688
    public void syncToServerOrCheckChanges()
2720
    public void registerDevice(Sync record)
2689
    {
2721
    {
2690
        if(TextUtils.isEmpty(preference.getDeviceUuid())) {
2722
        if(isActiveOperation) {
2691
            return;
2723
            return;
Línea 2692... Línea -...
2692
        }
-
 
2693
 
-
 
2694
        SyncDao syncDao = mAppDatabase.getSyncDao();
-
 
2695
        List<Sync> records = syncDao.selectBatch();
-
 
2696
 
2724
        }
2697
        if(records.size() > 0) {
-
 
2698
            syncToServer(records);
-
 
2699
        } else {
-
 
2700
 
-
 
2701
                long timeLast = 0;
-
 
2702
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
-
 
2703
                if (!TextUtils.isEmpty(preference.getLastDataRefresh())) {
-
 
2704
                    try {
-
 
2705
                        timeLast = simpleDateFormat.parse(preference.getLastDataRefresh()).getTime();
-
 
2706
                    } catch (Exception e) {
-
 
2707
 
-
 
2708
                    }
-
 
2709
 
-
 
Línea 2710... Línea -...
2710
                }
-
 
2711
 
-
 
Línea -... Línea 2725...
-
 
2725
 
-
 
2726
        Log.d(TAG, "registerDevice");
2712
 
2727
 
Línea -... Línea 2728...
-
 
2728
 
-
 
2729
        try {
-
 
2730
            Http http = new Http(this.getCacheDir());
2713
                Calendar calendar = Calendar.getInstance();
2731
            OkHttpClient client = http.getHttpClient(false);
-
 
2732
 
-
 
2733
            RequestBody formBody = new FormBody.Builder()
-
 
2734
                    .add(Constants.POST_DEVICE_FIELD_APPLICATION_ID,  String.valueOf(Configuration.APPLICATION_ID))
-
 
2735
                    .add(Constants.POST_DEVICE_FIELD_VARIANT_ID,  String.valueOf(Configuration.VARIANT_ID))
-
 
2736
                    .add(Constants.POST_DEVICE_FIELD_DEVICE_UUID, preference.getDeviceUuid())
-
 
2737
                    .add(Constants.POST_DEVICE_FIELD_MANUFACTURER, Build.MANUFACTURER)
-
 
2738
                    .add(Constants.POST_DEVICE_FIELD_BRAND, Build.BRAND)
Línea 2714... Línea 2739...
2714
                long timeNow = calendar.getTime().getTime();
2739
                    .add(Constants.POST_DEVICE_FIELD_VERSION, Build.VERSION.RELEASE  + " " + Build.VERSION_CODES.class.getFields()[android.os.Build.VERSION.SDK_INT].getName())
2715
 
-
 
2716
                if(timeNow > (timeLast + Constants.CHECK_CHANGES_TOKEN_INTERVAL)){
2740
                    .add(Constants.POST_DEVICE_FIELD_MODEL, Build.MODEL)
2717
 
-
 
2718
                    //Procesamiento en caso que el token no este, check cada 15 minutos.
2741
                    .add(Constants.POST_DEVICE_FIELD_PLATFORM, "android")
2719
 
-
 
2720
                    if(preference.isRefreshTokenIsRequired()) {
2742
                    .add(Constants.POST_DEVICE_FIELD_SYNC_ID, String.valueOf(record.getId()))
2721
                        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
2743
                    .build();
Línea 2722... Línea -...
2722
                            @Override
-
 
2723
                            public void onComplete(@NonNull Task<String> task) {
2744
 
Línea -... Línea 2745...
-
 
2745
            Log.d(TAG, "URL = " + Configuration.URL_DEVICE);
-
 
2746
            Request request = new Request.Builder()
2724
                                if (!task.isSuccessful()) {
2747
                    .url(Configuration.URL_DEVICE)
-
 
2748
                    .post(formBody)
-
 
2749
                    .build();
-
 
2750
 
Línea 2725... Línea 2751...
2725
                                    Log.w(TAG, "Fetching FCM registration token failed", task.getException());
2751
            isActiveOperation = true;
-
 
2752
 
Línea -... Línea 2753...
-
 
2753
            Call call = client.newCall(request);
2726
                                    return;
2754
            call.enqueue(new okhttp3.Callback() {
2727
                                }
2755
                public void onResponse(Call call, Response response)
2728
 
2756
                        throws IOException {
2729
                                // Get new FCM registration token
2757
                    Log.d(TAG, "Response Device :  " +  response.body().toString());
-
 
2758
                    isActiveOperation = false;
-
 
2759
 
-
 
2760
                    processResponseSyncToServer(response.body().string(),"device");
Línea -... Línea 2761...
-
 
2761
                }
-
 
2762
 
-
 
2763
                public void onFailure(Call call, IOException e) {
-
 
2764
                    isActiveOperation = false;
-
 
2765
                    Log.d(TAG, "Error :  " +  e.getMessage());
-
 
2766
                }
Línea 2730... Línea 2767...
2730
                                String token = task.getResult();
2767
            });
-
 
2768
        } catch (Exception e) {
-
 
2769
        }
Línea 2731... Línea 2770...
2731
 
2770
    }
2732
                                Log.e("BUG Token", "Token 3 :  " + token);
2771
 
-
 
2772
    @Override
2733
 
2773
    public void registerFcm(Sync record)
2734
                                createSyncRecordNewToken(token);
2774
    {
2735
 
2775
        isActiveOperation = true;
2736
                                preference.setRefreshTokenIsRequired(false);
2776
        Log.d(TAG, "FCM");
Línea 2737... Línea 2777...
2737
                                preference.save();
2777
        Log.e("Token a Sync",""+record.getData());
-
 
2778
 
-
 
2779
        try {
-
 
2780
            Http http = new Http(this.getCacheDir());
-
 
2781
            OkHttpClient client = http.getHttpClient(false);
Línea 2738... Línea 2782...
2738
                            }
2782
 
-
 
2783
            RequestBody formBody = new FormBody.Builder()
-
 
2784
                    .add(Constants.POST_FCM_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID))
2739
                        });
2785
                    .add(Constants.POST_FCM_FIELD_VARIANT_ID, String.valueOf(Configuration.VARIANT_ID))
2740
 
2786
                    .add(Constants.POST_FCM_FIELD_DEVICE_UUID,preference.getDeviceUuid())
2741
 
2787
                    .add(Constants.POST_FCM_FIELD_TOKEN, record.getData())
-
 
2788
                    .add(Constants.POST_FCM_FIELD_SYNC_ID, String.valueOf(record.getId()))
2742
                    } else {
2789
                    .build();
Línea 2743... Línea 2790...
2743
 
2790
 
2744
                        if (preference.getDeviceToken().isEmpty()) {
2791
            Log.d(TAG, "URL = " + Configuration.URL_FCM);
2745
                            FirebaseMessaging.getInstance().deleteToken().addOnCompleteListener(new OnCompleteListener<Void>() {
2792
            Request request = new Request.Builder()
2746
                                @Override
2793
                    .url(Configuration.URL_FCM)
-
 
2794
                    .post(formBody)
-
 
2795
                    .build();
-
 
2796
 
-
 
2797
            Call call = client.newCall(request);
2747
                                public void onComplete(@NonNull Task<Void> task) {
2798
            call.enqueue(new okhttp3.Callback() {
2748
                                    preference.setRefreshTokenIsRequired(true);
2799
                public void onResponse(Call call, Response response)
Línea 2749... Línea 2800...
2749
                                    preference.save();
2800
                        throws IOException {
2750
 
2801
                    isActiveOperation = false;
2751
                                    Log.e("Esta vacio"," mando delete token");
2802
                    Log.e("Se envio", "Procesando respuesta");
Línea -... Línea 2803...
-
 
2803
                    processResponseSyncToServer(response.body().string(),"");
-
 
2804
                }
-
 
2805
 
-
 
2806
                public void onFailure(Call call, IOException e) {
-
 
2807
                    Log.d(TAG, "Error :  " +  e.getMessage());
-
 
2808
                    isActiveOperation = false;
-
 
2809
                }
-
 
2810
            });
-
 
2811
        } catch (Exception e) {
-
 
2812
 
-
 
2813
 
-
 
2814
        }
-
 
2815
    }
-
 
2816
 
Línea 2752... Línea 2817...
2752
 
2817
 
2753
                                }
-
 
2754
                            });
-
 
2755
                        }
-
 
2756
                    }
2818
    @Override
2757
                }
2819
    public void syncToServerOrCheckChanges()
2758
 
-
 
2759
                 if (timeNow > (timeLast + Constants.CHECK_CHANGES_INTERVAL)) {
-
 
Línea 2760... Línea -...
2760
                     //Solicitar revision de cambios cada 4 horas.
-
 
Línea -... Línea 2820...
-
 
2820
    {
-
 
2821
 
-
 
2822
        boolean otherOperationInProgress = false;
-
 
2823
        SyncDao syncDao = mAppDatabase.getSyncDao();
-
 
2824
        List<Sync> records = syncDao.selectBatch();
-
 
2825
        for(Sync record : records) {
-
 
2826
            if (record.getType() == Constants.SYNC_ADAPTER_TYPE_DEVICE) {
-
 
2827
                otherOperationInProgress = true;
-
 
2828
                registerDevice(record);
-
 
2829
                break;
-
 
2830
            } else if  (record.getType() == Constants.SYNC_ADAPTER_TYPE_FCM) {
Línea 2761... Línea -...
2761
                    requestCheckChanges();
-
 
2762
                }
-
 
Línea -... Línea 2831...
-
 
2831
                otherOperationInProgress = true;
-
 
2832
                registerFcm(record);
Línea -... Línea 2833...
-
 
2833
                break;
-
 
2834
            }
-
 
2835
        }
2763
        }
2836
 
-
 
2837
        if(otherOperationInProgress) {
2764
    }
2838
            return;
-
 
2839
        }
2765
 
2840
 
-
 
2841
 
Línea 2766... Línea -...
2766
 
-
 
2767
 
-
 
2768
    public void syncToServer(List<Sync> records)
-
 
2769
    {
-
 
2770
 
-
 
2771
 
-
 
2772
        int maxRecordsSyncBatch = 0;
-
 
2773
        FormBody.Builder formBodyBatchBuilder = new FormBody.Builder();
-
 
2774
        formBodyBatchBuilder.add(Constants.POST_SYNC_BATCH_FIELD_DEVICE_UUID, preference.getDeviceUuid());
-
 
2775
 
-
 
2776
        for(Sync record : records)
-
 
2777
        {
-
 
2778
 
-
 
2779
           // Log.e("Ingreso a", "syncToServer"+record.getType()+" data"+record.getData());
2842
        if(records.size() > 0) {
2780
 
-
 
2781
          //  Log.d(TAG, "SyncRecord ID = " + record.getId() + " Data : "  + record.getData() + " Type= " + record.getType());
-
 
2782
 
-
 
2783
 
-
 
2784
            if(record.getType() == Constants.SYNC_ADAPTER_TYPE_DEVICE && !isSyncDevice) {
-
 
2785
                Log.d(TAG, "Device");
-
 
2786
 
-
 
2787
 
-
 
2788
                try {
2843
            syncToServer(records);
2789
                    Http http = new Http(this.getCacheDir());
2844
        } else {
2790
                    OkHttpClient client = http.getHttpClient(false);
-
 
Línea 2791... Línea 2845...
2791
 
2845
            long timeLast = 0;
2792
                    RequestBody formBody = new FormBody.Builder()
-
 
Línea 2793... Línea 2846...
2793
                            .add(Constants.POST_DEVICE_FIELD_APPLICATION_ID,  String.valueOf(Configuration.APPLICATION_ID))
2846
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
2794
                            .add(Constants.POST_DEVICE_FIELD_DEVICE_UUID, preference.getDeviceUuid())
2847
            if (!TextUtils.isEmpty(preference.getLastDataRefresh())) {
2795
                            .add(Constants.POST_DEVICE_FIELD_MANUFACTURER, Build.MANUFACTURER)
-
 
2796
                            .add(Constants.POST_DEVICE_FIELD_BRAND, Build.BRAND)
2848
                try {
2797
                            .add(Constants.POST_DEVICE_FIELD_VERSION, Build.VERSION.RELEASE  + " " + Build.VERSION_CODES.class.getFields()[android.os.Build.VERSION.SDK_INT].getName())
2849
                    timeLast = simpleDateFormat.parse(preference.getLastDataRefresh()).getTime();
2798
                            .add(Constants.POST_DEVICE_FIELD_MODEL, Build.MODEL)
2850
                } catch (Exception e) {
-
 
2851
                }
-
 
2852
            }
-
 
2853
 
-
 
2854
 
-
 
2855
            Calendar calendar = Calendar.getInstance();
-
 
2856
            long timeNow = calendar.getTime().getTime();
-
 
2857
 
-
 
2858
            if(timeNow > (timeLast + Constants.CHECK_CHANGES_TOKEN_INTERVAL)){
-
 
2859
                if(preference.isRefreshTokenIsRequired()) {
-
 
2860
                    FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
-
 
2861
                        @Override
-
 
2862
                        public void onComplete(@NonNull Task<String> task) {
2799
                            .add(Constants.POST_DEVICE_FIELD_PLATFORM, "android")
2863
                            if (!task.isSuccessful()) {
2800
                            .add(Constants.POST_DEVICE_FIELD_SYNC_ID, String.valueOf(record.getId()))
2864
                                Log.w(TAG, "Fetching FCM registration token failed", task.getException());
Línea 2801... Línea 2865...
2801
                            .build();
2865
                                return;
2802
 
2866
                            }
2803
                    Log.d(TAG, "URL = " + Configuration.URL_DEVICE);
2867
 
2804
                    Request request = new Request.Builder()
2868
                            // Get new FCM registration token
-
 
2869
                            String token = task.getResult();
Línea 2805... Línea -...
2805
                            .url(Configuration.URL_DEVICE)
-
 
2806
                            .post(formBody)
-
 
2807
                            .build();
-
 
Línea 2808... Línea -...
2808
 
-
 
2809
                    isSyncDevice = true;
-
 
2810
 
-
 
2811
                    Call call = client.newCall(request);
-
 
2812
                    call.enqueue(new okhttp3.Callback() {
-
 
2813
                        public void onResponse(Call call, Response response)
-
 
2814
                                throws IOException {
-
 
2815
                            Log.d(TAG, "Response Device :  " +  response.body().toString());
-
 
2816
                            isSyncDevice = false;
-
 
2817
 
-
 
2818
                            processResponseSyncToServer(response.body().string(),"device");
-
 
2819
                        }
-
 
2820
 
-
 
2821
                        public void onFailure(Call call, IOException e) {
-
 
2822
                            isSyncDevice = false;
-
 
2823
                            Log.d(TAG, "Error :  " +  e.getMessage());
-
 
2824
                        }
-
 
2825
                    });
-
 
2826
                } catch (Exception e) {
-
 
2827
                }
-
 
Línea 2828... Línea -...
2828
            }
-
 
2829
 
-
 
2830
            if(record.getType() == Constants.SYNC_ADAPTER_TYPE_FCM && !isSyncToken && !isSyncDevice) {
2870
                            Log.e("BUG Token", "Token 3 :  " + token);
2831
                isSyncToken = true;
2871
 
2832
                Log.d(TAG, "FCM");
2872
                            createSyncRecordNewToken(token);
2833
                Log.e("Token a Sync",""+record.getData());
2873
 
-
 
2874
                            preference.setRefreshTokenIsRequired(false);
Línea -... Línea 2875...
-
 
2875
                            preference.save();
-
 
2876
                        }
Línea 2834... Línea -...
2834
 
-
 
2835
                try {
-
 
Línea 2836... Línea 2877...
2836
                    Http http = new Http(this.getCacheDir());
2877
                    });
2837
                    OkHttpClient client = http.getHttpClient(false);
2878
                } else {
2838
 
2879
                    if (preference.getDeviceToken().isEmpty()) {
2839
                    RequestBody formBody = new FormBody.Builder()
2880
                        FirebaseMessaging.getInstance().deleteToken().addOnCompleteListener(new OnCompleteListener<Void>() {
2840
                            .add(Constants.POST_FCM_FIELD_DEVICE_UUID,preference.getDeviceUuid())
2881
                            @Override
2841
                            .add(Constants.POST_FCM_FIELD_TOKEN, record.getData())
2882
                            public void onComplete(@NonNull Task<Void> task) {
2842
                            .add(Constants.POST_FCM_FIELD_SYNC_ID, String.valueOf(record.getId()))
2883
                                preference.setRefreshTokenIsRequired(true);
Línea -... Línea 2884...
-
 
2884
                                preference.save();
-
 
2885
 
-
 
2886
                                Log.e("Esta vacio"," mando delete token");
-
 
2887
 
Línea 2843... Línea 2888...
2843
                            .build();
2888
                            }
2844
 
2889
                        });
2845
                    Log.d(TAG, "URL = " + Configuration.URL_FCM);
2890
                    }
Línea 2846... Línea 2891...
2846
                    Request request = new Request.Builder()
2891
                }
2847
                            .url(Configuration.URL_FCM)
2892
            }
2848
                            .post(formBody)
2893
 
Línea -... Línea 2894...
-
 
2894
            if (timeNow > (timeLast + Constants.CHECK_CHANGES_INTERVAL)) {
-
 
2895
                requestCheckChanges();
2849
                            .build();
2896
            }
2850
 
2897
        }
Línea 2851... Línea 2898...
2851
                    Call call = client.newCall(request);
2898
    }
2852
                    call.enqueue(new okhttp3.Callback() {
2899
 
Línea 2895... Línea 2942...
2895
                    .build();
2942
                    .build();
Línea 2896... Línea 2943...
2896
 
2943
 
2897
                Call call = client.newCall(request);
2944
                Call call = client.newCall(request);
2898
                call.enqueue(new okhttp3.Callback() {
2945
                call.enqueue(new okhttp3.Callback() {
2899
                    public void onResponse(Call call, Response response) throws IOException {
2946
                    public void onResponse(Call call, Response response) throws IOException {
2900
                        isSyncBatch = false;
2947
                        isActiveOperation = false;
2901
                        processResponseServerBatch(response.body().string());
2948
                        processResponseServerBatch(response.body().string());
Línea 2902... Línea 2949...
2902
                    }
2949
                    }
2903
 
2950
 
2904
                    public void onFailure(Call call, IOException e) {
2951
                    public void onFailure(Call call, IOException e) {
2905
                        Log.d(TAG, "Error :  " +  e.getMessage());
2952
                        Log.d(TAG, "Error :  " +  e.getMessage());
2906
                        isSyncBatch = false;
2953
                        isActiveOperation = false;
2907
                    }
2954
                    }
Línea 2984... Línea 3031...
2984
 
3031
 
2985
                if(jsonObjectData.has("sync_id")) {
3032
                if(jsonObjectData.has("sync_id")) {
2986
                    sync_id = jsonObjectData.getLong("sync_id");
3033
                    sync_id = jsonObjectData.getLong("sync_id");
Línea 2987... Línea 3034...
2987
                }
3034
                }
2988
 
3035
 
2989
                /*
3036
/*
2990
                if(jsonObjectData.has("message")) {
3037
                if(jsonObjectData.has("message")) {
Línea 2991... Línea 3038...
2991
                    message = jsonObjectData.getString("message");
3038
                    message = jsonObjectData.getString("message");
2992
                }
3039
                }*/
2993
 
3040
 
2994
                if(jsonObjectData.has("aes")) {
3041
                if(jsonObjectData.has("aes")) {
Línea 2995... Línea 3042...
2995
                    preference.setAes(jsonObjectData.getString("aes"));
3042
                    preference.setAes(jsonObjectData.getString("aes"));
2996
                    preference.save(this);
3043
                    preference.save();
2997
                }
3044
                }
2998
 
3045
 
2999
                if(jsonObjectData.has("password")) {
-
 
-
 
3046
                if(jsonObjectData.has("password")) {
3000
                    preference.setPassword(jsonObjectData.getString("password"));
3047
                    preference.setPassword(jsonObjectData.getString("password"));
3001
                    preference.save(this);
3048
                    preference.save();
3002
                }
3049
                }
3003
                */
3050
 
3004
            }
3051
            }