From 4808ed36aaa54321127211133ad635ded036684e Mon Sep 17 00:00:00 2001 From: PromasterGuru Date: Thu, 18 Jul 2019 10:44:00 +0300 Subject: [PATCH 1/4] fix(fix-assets-screen): Redirect user to assets screen after login - Ensure the user is redirected to assets screen after login - Ensure the user can view their assets [Delivers #166574091] --- app/build.gradle | 5 ++--- app/src/main/java/com/andela/art/api/ApiService.java | 2 +- .../java/com/andela/art/api/UserAssetResponse.java | 12 ++++++------ app/src/main/java/com/andela/art/models/Asset.java | 10 +++++----- .../presentation/UserDashBoardActivity.java | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 3 ++- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8ff1acc..b757702 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,8 +50,7 @@ android { } prod { // Should switch to art-backend in production - buildConfigField "String" ,"BASE_URL", "\"http://api-staging-art.andela.com\"" -// buildConfigField "String" ,"BASE_URL", "\"https://art-backend.herokuapp.com\"" + buildConfigField "String" ,"BASE_URL", "\"https://art-backend.herokuapp.com\"" } } @@ -107,7 +106,7 @@ dependencies { implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' implementation 'io.reactivex.rxjava2:rxjava:2.1.10' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' - implementation 'com.google.dagger:dagger-android:2.14.1' + implementation 'com.google.dagger:dagger-android:2.15' implementation 'com.google.dagger:dagger-android-support:2.14.1' implementation 'com.google.firebase:firebase-core:12.0.1' implementation 'com.google.firebase:firebase-auth:12.0.1' diff --git a/app/src/main/java/com/andela/art/api/ApiService.java b/app/src/main/java/com/andela/art/api/ApiService.java index 16ca4e7..cdc47d7 100644 --- a/app/src/main/java/com/andela/art/api/ApiService.java +++ b/app/src/main/java/com/andela/art/api/ApiService.java @@ -33,7 +33,7 @@ public interface ApiService { * * @return Observable */ - @GET("/api/v1/assets/") + @GET("/api/v1/assets") Observable getAssets(); /** diff --git a/app/src/main/java/com/andela/art/api/UserAssetResponse.java b/app/src/main/java/com/andela/art/api/UserAssetResponse.java index 4442064..9bb730e 100644 --- a/app/src/main/java/com/andela/art/api/UserAssetResponse.java +++ b/app/src/main/java/com/andela/art/api/UserAssetResponse.java @@ -16,10 +16,10 @@ public class UserAssetResponse { private Integer count; @SerializedName("next") @Expose - private Integer next; + private String next; @SerializedName("previous") @Expose - private Object previous; + private String previous; @SerializedName("results") @Expose private List assets; @@ -34,17 +34,17 @@ public Integer getCount() { /** * - * @return next - Integer + * @return next - String */ - public Integer getNext() { + public String getNext() { return next; } /** * - * @return previous - Object + * @return previous - String */ - public Object getPrevious() { + public String getPrevious() { return previous; } diff --git a/app/src/main/java/com/andela/art/models/Asset.java b/app/src/main/java/com/andela/art/models/Asset.java index 0f1cb17..2467b92 100644 --- a/app/src/main/java/com/andela/art/models/Asset.java +++ b/app/src/main/java/com/andela/art/models/Asset.java @@ -53,7 +53,7 @@ public void setAllocationStatus(String allocationStatus) { * @return mCurrentStatus - String */ public String getCurrentStatus() { - return mCurrentStatus; + return String.valueOf(mCurrentStatus); } @@ -78,7 +78,7 @@ public void setAssignedTo(Asignee asignee) { * @return mCheckinStatus - String */ public String getCheckinStatus() { - return mCheckinStatus; + return String.valueOf(mCheckinStatus); } /** @@ -126,7 +126,7 @@ public void setId(int id) { * @return mItemCode - String */ public String getItemCode() { - return mItemCode; + return String.valueOf(mItemCode); } /** @@ -174,7 +174,7 @@ public void setModelNumber(String modelNumber) { * @return mSerialNumber - String */ public String getSerialNumber() { - return mSerialNumber; + return String.valueOf(mSerialNumber); } /** @@ -190,7 +190,7 @@ public void setSerialNumber(String serialNumber) { * @return mAssetType - String */ public String getAssetType() { - return mAssetType; + return String.valueOf(mAssetType); } /** diff --git a/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java b/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java index 317099e..8b15cba 100644 --- a/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java +++ b/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java @@ -178,8 +178,8 @@ public void onDisplayErrorMessage(Throwable error) { mSwipeRefreshLayout.setRefreshing(false); } String errorMessage = "Failed to load data. Please try again later."; - Toast.makeText(getApplicationContext(), errorMessage, Toast.LENGTH_LONG).show(); - Log.v("Error Message", error.getMessage()); + Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); + Log.d("AssetsError", error.getMessage()); } /** diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 44e7c4d..614288f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Jul 18 12:41:03 EAT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip From 61638c5eae657ae96e45ca513edddedffb4ed5b0 Mon Sep 17 00:00:00 2001 From: PromasterGuru Date: Tue, 23 Jul 2019 12:32:42 +0300 Subject: [PATCH 2/4] Display assets in a recycler view --- .../art/reportproblem/ReportProblemTest.java | 2 +- .../SendFeedbackActivityTest.java | 2 +- .../com/andela/art/settings/SettingsTest.java | 2 +- .../art/userdashboard/UserDashBoardTest.java | 11 -- .../art/utils/RestServiceTestHelper.java | 1 + .../java/com/andela/art/api/ApiModule.java | 1 - .../com/andela/art/api/EmailsResponse.java | 3 +- .../com/andela/art/api/UserAssetResponse.java | 4 +- .../andela/art/checkin/CheckInActivity.java | 4 +- .../presentation/ArtEditText.java | 2 +- .../art/login/SecurityEmailsPresenter.java | 1 + .../art/login/injection/LoginComponent.java | 2 +- .../andela/art/root/ApplicationModule.java | 1 + .../injection/SerialEntryComponent.java | 2 +- .../injection/SendFeedbackComponent.java | 2 +- .../presentation/AssetAdapter.java | 94 +++++++++++ .../presentation/AssetSliderFragment.java | 70 --------- .../presentation/PagerAdapter.java | 84 ---------- .../presentation/UserDashBoardActivity.java | 43 ++--- .../res/layout/app_bar_navigation_drawer.xml | 1 - app/src/main/res/layout/fragment_activity.xml | 36 +---- .../main/res/layout/fragment_asset_slider.xml | 148 +++++++++--------- .../res/layout/fragment_user_dashboard.xml | 4 +- app/src/main/res/layout/nfc_dialog.xml | 4 +- app/src/main/res/values/colors.xml | 2 +- app/src/mock/google-services.json | 139 +++------------- .../com/andela/art/login/LoginActivity.java | 4 +- .../presentation/ReportProblemActivity.java | 6 +- .../presentation/SendFeedbackActivity.java | 2 +- .../com/andela/art/login/LoginActivity.java | 7 +- .../presentation/ReportProblemActivity.java | 6 +- .../presentation/SendFeedbackActivity.java | 2 +- .../com/andela/art/LoginActivityTest.java | 4 +- .../art/util/RxSchedulersOverrideRule.java | 1 + 34 files changed, 236 insertions(+), 461 deletions(-) create mode 100644 app/src/main/java/com/andela/art/userdashboard/presentation/AssetAdapter.java delete mode 100644 app/src/main/java/com/andela/art/userdashboard/presentation/AssetSliderFragment.java delete mode 100644 app/src/main/java/com/andela/art/userdashboard/presentation/PagerAdapter.java diff --git a/app/src/androidTest/java/com/andela/art/reportproblem/ReportProblemTest.java b/app/src/androidTest/java/com/andela/art/reportproblem/ReportProblemTest.java index 784631b..3bdcfb1 100644 --- a/app/src/androidTest/java/com/andela/art/reportproblem/ReportProblemTest.java +++ b/app/src/androidTest/java/com/andela/art/reportproblem/ReportProblemTest.java @@ -29,10 +29,10 @@ import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard; import static android.support.test.espresso.action.ViewActions.typeText; +import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; -import static android.support.test.espresso.assertion.ViewAssertions.matches; import static junit.framework.Assert.assertEquals; import static org.hamcrest.Matchers.not; diff --git a/app/src/androidTest/java/com/andela/art/sendfeedback/SendFeedbackActivityTest.java b/app/src/androidTest/java/com/andela/art/sendfeedback/SendFeedbackActivityTest.java index 4057605..1d636c4 100644 --- a/app/src/androidTest/java/com/andela/art/sendfeedback/SendFeedbackActivityTest.java +++ b/app/src/androidTest/java/com/andela/art/sendfeedback/SendFeedbackActivityTest.java @@ -31,10 +31,10 @@ import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard; import static android.support.test.espresso.action.ViewActions.typeText; +import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; -import static android.support.test.espresso.assertion.ViewAssertions.matches; import static junit.framework.Assert.assertTrue; import static org.hamcrest.Matchers.not; diff --git a/app/src/androidTest/java/com/andela/art/settings/SettingsTest.java b/app/src/androidTest/java/com/andela/art/settings/SettingsTest.java index 4cc250e..f5311c9 100644 --- a/app/src/androidTest/java/com/andela/art/settings/SettingsTest.java +++ b/app/src/androidTest/java/com/andela/art/settings/SettingsTest.java @@ -5,9 +5,9 @@ import android.support.test.runner.AndroidJUnit4; import com.andela.art.R; +import com.andela.art.login.LoginActivity; import com.andela.art.reportproblem.presentation.ReportProblemActivity; import com.andela.art.securitydashboard.presentation.SecurityDashboardActivity; -import com.andela.art.login.LoginActivity; import com.andela.art.sendfeedback.presentation.SendFeedbackActivity; import org.junit.After; diff --git a/app/src/androidTest/java/com/andela/art/userdashboard/UserDashBoardTest.java b/app/src/androidTest/java/com/andela/art/userdashboard/UserDashBoardTest.java index f87a493..f5b385e 100644 --- a/app/src/androidTest/java/com/andela/art/userdashboard/UserDashBoardTest.java +++ b/app/src/androidTest/java/com/andela/art/userdashboard/UserDashBoardTest.java @@ -24,7 +24,6 @@ import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.CoreMatchers.allOf; -import static org.hamcrest.core.IsNot.not; /** * Test for UserDashBoard. @@ -59,16 +58,6 @@ public void testUserInfoIsDisplayed() { )); } - /** - * Test incidence report button does not appear when no assets are available. - */ - @Test - public void testIncidentReportButtonDoesNotAppearWhenNoAssetIsAvailable() { - userDashboardActivityTestRule.launchActivity(null); - onView(withId(R.id.incident_button)) - .check(matches(not(isDisplayed()))); - } - /** * Get a current activity. * @return activity diff --git a/app/src/androidTest/java/com/andela/art/utils/RestServiceTestHelper.java b/app/src/androidTest/java/com/andela/art/utils/RestServiceTestHelper.java index 75a28d7..8d3bf9c 100644 --- a/app/src/androidTest/java/com/andela/art/utils/RestServiceTestHelper.java +++ b/app/src/androidTest/java/com/andela/art/utils/RestServiceTestHelper.java @@ -5,6 +5,7 @@ */ import android.content.Context; + import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; diff --git a/app/src/main/java/com/andela/art/api/ApiModule.java b/app/src/main/java/com/andela/art/api/ApiModule.java index 2a6fa86..deb7b8d 100644 --- a/app/src/main/java/com/andela/art/api/ApiModule.java +++ b/app/src/main/java/com/andela/art/api/ApiModule.java @@ -3,7 +3,6 @@ import com.andela.art.BuildConfig; import com.andela.art.root.SharedPrefsWrapper; - import dagger.Module; import dagger.Provides; import okhttp3.HttpUrl; diff --git a/app/src/main/java/com/andela/art/api/EmailsResponse.java b/app/src/main/java/com/andela/art/api/EmailsResponse.java index 5efaba0..91cb3fd 100644 --- a/app/src/main/java/com/andela/art/api/EmailsResponse.java +++ b/app/src/main/java/com/andela/art/api/EmailsResponse.java @@ -1,9 +1,10 @@ package com.andela.art.api; -import java.util.List; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; +import java.util.List; + /** * Emails response pojo. */ diff --git a/app/src/main/java/com/andela/art/api/UserAssetResponse.java b/app/src/main/java/com/andela/art/api/UserAssetResponse.java index 9bb730e..7c52179 100644 --- a/app/src/main/java/com/andela/art/api/UserAssetResponse.java +++ b/app/src/main/java/com/andela/art/api/UserAssetResponse.java @@ -1,11 +1,11 @@ package com.andela.art.api; -import java.util.List; - import com.andela.art.models.Asset; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; +import java.util.List; + /** * UserAssetResponse pojo. */ diff --git a/app/src/main/java/com/andela/art/checkin/CheckInActivity.java b/app/src/main/java/com/andela/art/checkin/CheckInActivity.java index 67d3e18..1c1cff2 100644 --- a/app/src/main/java/com/andela/art/checkin/CheckInActivity.java +++ b/app/src/main/java/com/andela/art/checkin/CheckInActivity.java @@ -15,8 +15,8 @@ import com.andela.art.checkin.injection.CheckInModule; import com.andela.art.checkin.injection.DaggerCheckInComponent; import com.andela.art.databinding.ActivityCheckInBinding; -import com.andela.art.models.Asset; import com.andela.art.models.Asignee; +import com.andela.art.models.Asset; import com.andela.art.room.CheckInEntity; import com.andela.art.room.CheckInRepository; import com.andela.art.root.ApplicationComponent; @@ -24,7 +24,9 @@ import com.andela.art.root.ArtApplication; import com.andela.art.securitydashboard.presentation.NfcSecurityDashboardActivity; import com.squareup.picasso.Picasso; + import java.util.Locale; + import javax.inject.Inject; /** diff --git a/app/src/main/java/com/andela/art/incidentreport/presentation/ArtEditText.java b/app/src/main/java/com/andela/art/incidentreport/presentation/ArtEditText.java index e2265ee..f4b5432 100644 --- a/app/src/main/java/com/andela/art/incidentreport/presentation/ArtEditText.java +++ b/app/src/main/java/com/andela/art/incidentreport/presentation/ArtEditText.java @@ -2,8 +2,8 @@ import android.content.Context; import android.graphics.drawable.Drawable; -import android.util.AttributeSet; import android.support.v7.widget.AppCompatEditText; +import android.util.AttributeSet; /** diff --git a/app/src/main/java/com/andela/art/login/SecurityEmailsPresenter.java b/app/src/main/java/com/andela/art/login/SecurityEmailsPresenter.java index 691c36c..9b5d8e0 100644 --- a/app/src/main/java/com/andela/art/login/SecurityEmailsPresenter.java +++ b/app/src/main/java/com/andela/art/login/SecurityEmailsPresenter.java @@ -2,6 +2,7 @@ import android.content.Context; import android.widget.Toast; + import com.andela.art.api.ApiService; import com.andela.art.root.Constants; import com.andela.art.root.Presenter; diff --git a/app/src/main/java/com/andela/art/login/injection/LoginComponent.java b/app/src/main/java/com/andela/art/login/injection/LoginComponent.java index ae96b4c..aa77876 100644 --- a/app/src/main/java/com/andela/art/login/injection/LoginComponent.java +++ b/app/src/main/java/com/andela/art/login/injection/LoginComponent.java @@ -2,10 +2,10 @@ import com.andela.art.api.ApiModule; import com.andela.art.firebase.FirebaseModule; +import com.andela.art.login.LoginActivity; import com.andela.art.root.Activity; import com.andela.art.root.ApplicationComponent; import com.andela.art.root.ApplicationModule; -import com.andela.art.login.LoginActivity; import com.andela.art.settings.SettingsActivity; import dagger.Component; diff --git a/app/src/main/java/com/andela/art/root/ApplicationModule.java b/app/src/main/java/com/andela/art/root/ApplicationModule.java index dc7d45b..9543c0e 100644 --- a/app/src/main/java/com/andela/art/root/ApplicationModule.java +++ b/app/src/main/java/com/andela/art/root/ApplicationModule.java @@ -2,6 +2,7 @@ import android.app.Application; import android.content.Context; + import dagger.Module; import dagger.Provides; diff --git a/app/src/main/java/com/andela/art/securitydashboard/injection/SerialEntryComponent.java b/app/src/main/java/com/andela/art/securitydashboard/injection/SerialEntryComponent.java index 5a684dc..a7d24ed 100644 --- a/app/src/main/java/com/andela/art/securitydashboard/injection/SerialEntryComponent.java +++ b/app/src/main/java/com/andela/art/securitydashboard/injection/SerialEntryComponent.java @@ -1,8 +1,8 @@ package com.andela.art.securitydashboard.injection; import com.andela.art.api.ApiModule; -import com.andela.art.root.ApplicationComponent; import com.andela.art.firebase.FirebaseModule; +import com.andela.art.root.ApplicationComponent; import com.andela.art.root.ApplicationModule; import com.andela.art.securitydashboard.presentation.NfcSecurityDashboardActivity; import com.andela.art.securitydashboard.presentation.SecurityDashboardActivity; diff --git a/app/src/main/java/com/andela/art/sendfeedback/injection/SendFeedbackComponent.java b/app/src/main/java/com/andela/art/sendfeedback/injection/SendFeedbackComponent.java index 68c9c12..c374625 100644 --- a/app/src/main/java/com/andela/art/sendfeedback/injection/SendFeedbackComponent.java +++ b/app/src/main/java/com/andela/art/sendfeedback/injection/SendFeedbackComponent.java @@ -1,9 +1,9 @@ package com.andela.art.sendfeedback.injection; import com.andela.art.api.ApiModule; +import com.andela.art.root.Activity; import com.andela.art.root.ApplicationComponent; import com.andela.art.root.ApplicationModule; -import com.andela.art.root.Activity; import com.andela.art.sendfeedback.presentation.SendFeedbackActivity; import dagger.Component; diff --git a/app/src/main/java/com/andela/art/userdashboard/presentation/AssetAdapter.java b/app/src/main/java/com/andela/art/userdashboard/presentation/AssetAdapter.java new file mode 100644 index 0000000..dd358cf --- /dev/null +++ b/app/src/main/java/com/andela/art/userdashboard/presentation/AssetAdapter.java @@ -0,0 +1,94 @@ +package com.andela.art.userdashboard.presentation; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.andela.art.R; +import com.andela.art.incidentreport.presentation.IncidentReportActivity; +import com.andela.art.models.Asset; + +import java.util.List; + +/** + * Created by PromasterGuru 29/07/2019. + * This adapter managers views for the assets recycler view. + */ +public class AssetAdapter extends RecyclerView.Adapter { + private final List assets; + private Context context; + + /** + * @param assets - list of assets fetched. + * @param context - Application Context. + */ + public AssetAdapter(Context context, List assets) { + this.context = context; + this.assets = assets; + } + + @Override + public AssetAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.fragment_asset_slider, parent, false); + MyViewHolder myViewHolder = new MyViewHolder(view); + return myViewHolder; + } + + @Override + public void onBindViewHolder(AssetAdapter.MyViewHolder holder, int position) { + /** + * display asset's information on recycler view holder + */ + holder.type.setText(assets.get(position).getAssetType()); + holder.serial.setText(assets.get(position).getSerialNumber()); + holder.tag.setText(assets.get(position).getItemCode()); + } + + @Override + public int getItemCount() { + return assets.size(); + } + /** + * Extends RecyclerView.ViewHolder. + */ + public class MyViewHolder extends RecyclerView.ViewHolder { + TextView type, serial, tag; + + /** + * @param view - Adapter view + */ + public MyViewHolder(View view) { + super(view); + type = view.findViewById(R.id.asset_type); + serial = view.findViewById(R.id.serial); + tag = view.findViewById(R.id.tag); + + /** + * Set an OnClickListener to the ViewHolder + * Launch the IncidentReportActivity when an asset item is clicked + */ + + view.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + if (!assets.isEmpty()) { + Asset asset = assets.get(getAdapterPosition()); + Bundle bundle = new Bundle(); + bundle.putSerializable("asset", asset); + Intent intent = new Intent(context, IncidentReportActivity.class); + intent.putExtras(bundle); + context.startActivity(intent); + } + } + }); + + } + } +} diff --git a/app/src/main/java/com/andela/art/userdashboard/presentation/AssetSliderFragment.java b/app/src/main/java/com/andela/art/userdashboard/presentation/AssetSliderFragment.java deleted file mode 100644 index 9b3ea3c..0000000 --- a/app/src/main/java/com/andela/art/userdashboard/presentation/AssetSliderFragment.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.andela.art.userdashboard.presentation; - -import android.databinding.DataBindingUtil; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.andela.art.R; -import com.andela.art.databinding.FragmentAssetSliderBinding; - -/** - * Created by zack on 5/10/18. - */ - -public class AssetSliderFragment extends Fragment { - - - FragmentAssetSliderBinding binding; - /** - * Called to have the fragment instantiate its user interface view. - * This is optional, and non-graphical fragments can return null (which - * is the default implementation). This will be called between - * {@link #onCreate(Bundle)} and {@link #onActivityCreated(Bundle)}. - *

- *

If you return a View from here, you will later be called in - * {@link #onDestroyView} when the view is being released. - * - * @param inflater The LayoutInflater object that can be used to inflate - * any views in the fragment, - * @param container If non-null, this is the parent view that the fragment's - * UI should be attached to. The fragment should not - * add the view itself, - * but this can be used to generate the LayoutParams of the view. - * @param savedInstanceState If non-null, this fragment is being re-constructed - * from a previous saved state as given here. - * @return Return the View for the fragment's UI, or null. - */ - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_asset_slider, - container, false); - setDetails(); - return binding.getRoot(); - } - - /** - * Set asset details on card. - */ - public void setDetails() { - if (!getArguments().isEmpty()) { - binding.assetType.setText(getArguments().getString("type")); - binding.serial.setText(getArguments().getString("serial")); - binding.tag.setText(getArguments().getString("tag")); - - if (getArguments().getString("serial"). - equals(getResources().getString(R.string.unassigned))) { - //setTextAlignment and setGravity not responding hence setPadding - binding.serial.setPadding(200, 0, 0, 0); - binding.serial.setTextSize(16); - binding.asset.setVisibility(View.GONE); - binding.mac.setVisibility(View.GONE); - } - } - } -} diff --git a/app/src/main/java/com/andela/art/userdashboard/presentation/PagerAdapter.java b/app/src/main/java/com/andela/art/userdashboard/presentation/PagerAdapter.java deleted file mode 100644 index 91f7a36..0000000 --- a/app/src/main/java/com/andela/art/userdashboard/presentation/PagerAdapter.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.andela.art.userdashboard.presentation; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; - -import com.andela.art.models.Asset; - -import java.util.List; - -/** - * Created by zack on 5/11/18. - */ - -public class PagerAdapter extends FragmentStatePagerAdapter { - private final List assets; - private Asset asset; - private int currentPosition; - - /** - * - * @param fm - fragment manager. - * @param assets - list of assets fetched. - */ - public PagerAdapter(FragmentManager fm, List assets) { - - super(fm); - this.assets = assets; - } - - /** - * Return the Fragment associated with a specified position. - * - * @param position - */ - @Override - public Fragment getItem(int position) { - AssetSliderFragment fragment = new AssetSliderFragment(); - asset = assets.get(position); - Bundle bundle = new Bundle(); - currentPosition = position; - bundle.putString("type", asset.getAssetType()); - bundle.putString("serial", asset.getSerialNumber()); - bundle.putString("tag", asset.getItemCode()); - fragment.setArguments(bundle); - return fragment; - } - - /** - * Return the number of views available. - */ - @Override - public int getCount() { - return assets.size(); - } - - /** - * Called when the host view is attempting to determine if an item's position - * has changed. Returns {@link #POSITION_UNCHANGED} if the position of the given - * item has not changed or {@link #POSITION_NONE} if the item is no longer present - * in the adapter. - *

- *

The default implementation assumes that items will never - * change position and always returns {@link #POSITION_UNCHANGED}. - * - * @param object Object representing an item, previously returned by a call. - * @return object's new position index from [0, {@link #getCount()}), - * {@link #POSITION_UNCHANGED} if the object's position has not changed, - * or {@link #POSITION_NONE} if the item is no longer present. - */ - @Override - public int getItemPosition(Object object) { - return PagerAdapter.POSITION_NONE; - } - - /** - * Get's the current fragment's position. - * @return currentPosition - int CurrentPosition - */ - public int getCurrentPosition() { - return currentPosition; - } -} diff --git a/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java b/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java index 8b15cba..56585e5 100644 --- a/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java +++ b/app/src/main/java/com/andela/art/userdashboard/presentation/UserDashBoardActivity.java @@ -4,20 +4,19 @@ import android.content.Intent; import android.databinding.DataBindingUtil; import android.net.Uri; +import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; -import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.SwipeRefreshLayout; -import android.util.Log; -import android.view.View; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; import android.widget.Toast; import com.andela.art.R; import com.andela.art.api.UserAssetResponse; import com.andela.art.databinding.FragmentActivityBinding; -import com.andela.art.incidentreport.presentation.IncidentReportActivity; import com.andela.art.models.Asset; import com.andela.art.root.ApplicationComponent; import com.andela.art.root.ApplicationModule; @@ -40,7 +39,9 @@ public class UserDashBoardActivity extends BaseMenuActivity implements SliderView { private static final String EXTRA_ACCOUNT_INFORMATION = "user_account"; - private PagerAdapter pagerAdapter; + private AssetAdapter assetAdapter; + private RecyclerView recyclerView; + private GridLayoutManager gridLayoutManager; GoogleSignInAccount account; FragmentActivityBinding binding; String name, email; @@ -99,10 +100,6 @@ protected void onCreate(Bundle savedInstanceState) { profileFragment.setArguments(bundle); fragmentTransaction.add(R.id.profile_container, profileFragment); fragmentTransaction.commit(); - binding.incidentButton.setOnClickListener(v -> { - binding.incidentButton.setBackground(getResources() - .getDrawable(R.drawable.incident_button_clicked)); - }); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override @@ -178,8 +175,6 @@ public void onDisplayErrorMessage(Throwable error) { mSwipeRefreshLayout.setRefreshing(false); } String errorMessage = "Failed to load data. Please try again later."; - Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); - Log.d("AssetsError", error.getMessage()); } /** @@ -194,22 +189,11 @@ public void onGetAssets(UserAssetResponse response) { onEmptyAsset(); return; } - pagerAdapter = new PagerAdapter(fragmentManager, assets); - binding.pager.setAdapter(pagerAdapter); - binding.tabDots.setupWithViewPager(binding.pager, true); - if (!assets.isEmpty()) { - binding.incidentButton.setVisibility(View.VISIBLE); - binding.incidentButton.setOnClickListener(view -> { - int listPosition = binding.pager.getCurrentItem(); - Asset asset = assets.get(listPosition); - Bundle bundle = new Bundle(); - bundle.putSerializable("asset", asset); - Intent intent = new Intent(UserDashBoardActivity.this, - IncidentReportActivity.class); - intent.putExtras(bundle); - startActivity(intent); - }); - } + assetAdapter = new AssetAdapter(getApplicationContext(), assets); + recyclerView = findViewById(R.id.recycler); + recyclerView.setAdapter(assetAdapter); + gridLayoutManager = new GridLayoutManager(this, 1); + recyclerView.setLayoutManager(gridLayoutManager); dismissDialog("200"); } @@ -221,11 +205,6 @@ public void onEmptyAsset() { Asset newAsset = new Asset(); newAsset.setSerialNumber("NO ASSET ASSIGNED YET"); asset.add(newAsset); - pagerAdapter = new PagerAdapter(fragmentManager, asset); - binding.pager.setAdapter(pagerAdapter); - binding.tabDots.setupWithViewPager(binding.pager, true); - - binding.incidentButton.setVisibility(View.GONE); dismissDialog("200"); } diff --git a/app/src/main/res/layout/app_bar_navigation_drawer.xml b/app/src/main/res/layout/app_bar_navigation_drawer.xml index 6fbc373..7e69d28 100644 --- a/app/src/main/res/layout/app_bar_navigation_drawer.xml +++ b/app/src/main/res/layout/app_bar_navigation_drawer.xml @@ -1,6 +1,5 @@ - - - - - - - -