From 39e4eb5408250d116896b9ae2fc4207b3194dfc0 Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Wed, 1 Dec 2021 23:32:54 +0200 Subject: [PATCH] add wishlist to dynamo db --- .idea/misc.xml | 6 + app/src/main/AndroidManifest.xml | 17 +-- .../datastore/generated/model/Favourites.java | 2 - .../example/thrifty/FavouriteActivity.java | 137 ++++++++++++++++++ .../com/example/thrifty/MainActivity.java | 37 ++--- .../example/thrifty/adapters/FavAdapter.java | 104 +++++++++++++ .../thrifty/adapters/NewItemsAdapter.java | 87 +++++------ .../main/res/layout/activity_favourite.xml | 76 ++++++++++ app/src/main/res/layout/card_layout.xml | 2 +- 9 files changed, 397 insertions(+), 71 deletions(-) create mode 100644 app/src/main/java/com/example/thrifty/FavouriteActivity.java create mode 100644 app/src/main/java/com/example/thrifty/adapters/FavAdapter.java create mode 100644 app/src/main/res/layout/activity_favourite.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 28966ce..92875a1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -31,7 +31,13 @@ + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e829941..fa6d60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,17 +9,18 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Thrifty"> + - - @@ -39,7 +40,6 @@ android:name=".MenClothes" android:exported="false" /> - - - + android:exported="false" /> + + diff --git a/app/src/main/java/com/amplifyframework/datastore/generated/model/Favourites.java b/app/src/main/java/com/amplifyframework/datastore/generated/model/Favourites.java index 5907f93..1b49ceb 100644 --- a/app/src/main/java/com/amplifyframework/datastore/generated/model/Favourites.java +++ b/app/src/main/java/com/amplifyframework/datastore/generated/model/Favourites.java @@ -1,7 +1,6 @@ package com.amplifyframework.datastore.generated.model; -import java.util.List; import java.util.UUID; import java.util.Objects; @@ -11,7 +10,6 @@ import com.amplifyframework.core.model.Model; import com.amplifyframework.core.model.ModelOperation; import com.amplifyframework.core.model.annotations.AuthRule; -import com.amplifyframework.core.model.annotations.Index; import com.amplifyframework.core.model.annotations.ModelConfig; import com.amplifyframework.core.model.annotations.ModelField; import com.amplifyframework.core.model.query.predicate.QueryField; diff --git a/app/src/main/java/com/example/thrifty/FavouriteActivity.java b/app/src/main/java/com/example/thrifty/FavouriteActivity.java new file mode 100644 index 0000000..ed1d188 --- /dev/null +++ b/app/src/main/java/com/example/thrifty/FavouriteActivity.java @@ -0,0 +1,137 @@ +package com.example.thrifty; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; + +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.preference.PreferenceManager; +import android.view.View; +import android.util.Log; +import android.widget.Toolbar; + +import com.amplifyframework.AmplifyException; +import com.amplifyframework.api.aws.AWSApiPlugin; +import com.amplifyframework.api.graphql.model.ModelQuery; +import com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin; +import com.amplifyframework.core.Amplify; +import com.amplifyframework.datastore.AWSDataStorePlugin; +import com.amplifyframework.datastore.generated.model.Favourites; +import com.amplifyframework.datastore.generated.model.Product; +import com.amplifyframework.storage.s3.AWSS3StoragePlugin; +import com.example.thrifty.adapters.FavAdapter; +import com.example.thrifty.fragments.MainMenuFragment; +import com.google.android.material.bottomnavigation.BottomNavigationItemView; +import com.google.android.material.bottomnavigation.BottomNavigationView; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + + +public class FavouriteActivity extends AppCompatActivity { + + private List favProduct = new ArrayList<>(); + private List myProduct= new ArrayList<>(); + + RecyclerView favRecView; + FavAdapter favAdapter; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + MainMenuFragment mainMenuFragment = new MainMenuFragment(); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); +// toolbar.setNavigationIcon(R.drawable.ic_baseline_arrow_back_ios_new_24); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + + try { + Amplify.addPlugin(new AWSS3StoragePlugin()); + Amplify.addPlugin(new AWSCognitoAuthPlugin()); + Amplify.addPlugin(new AWSDataStorePlugin()); + Amplify.addPlugin(new AWSApiPlugin()); + Amplify.configure(getApplicationContext()); + Log.i("MyAmplifyApp", "Initialized Amplify"); + } catch (AmplifyException error) { + Log.e("MyAmplifyApp", "Could not initialize Amplify", error); + } + + bottomNav(); + initRecyclerViews(); + } + + public void bottomNav(){ + BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView); + bottomNavigationView.setSelectedItemId(R.id.homeNav); + BottomNavigationItemView homeNav = findViewById(R.id.homeNav); + BottomNavigationItemView search = findViewById(R.id.search); +// BottomNavigationItemView cart = findViewById(R.id.cart); + BottomNavigationItemView wishlist = findViewById(R.id.wishlist); + BottomNavigationItemView profile = findViewById(R.id.profile); + + search.setOnClickListener(view -> { + Intent intent = new Intent(getApplicationContext(), SearchActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + }); + + homeNav.setOnClickListener(view -> { + Intent intent = new Intent(getApplicationContext(), MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + }); + + profile.setOnClickListener(view -> { + Intent intent = new Intent(getApplicationContext(), Profile.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + }); + + wishlist.setOnClickListener(view -> { + Intent intent = new Intent(getApplicationContext(), FavouriteActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + }); + } + + private void initRecyclerViews() { + favRecView = findViewById(R.id.FavRecView); + favRecView.setAdapter(favAdapter); + favRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), RecyclerView.HORIZONTAL, false)); + + favRecView.setAdapter(new FavAdapter(favProduct)); + Handler handler = new Handler(Looper.myLooper(), new Handler.Callback() { + @SuppressLint("NotifyDataSetChanged") + @Override + public boolean handleMessage(@NonNull Message message) { + Objects.requireNonNull(favRecView.getAdapter()).notifyDataSetChanged(); + return false; + } + }); + + Amplify.API.query( + ModelQuery.list(Product.class), + response -> { + for (Product todo : response.getData()) { + myProduct.add(todo); + } + handler.sendEmptyMessage(1); + }, error -> Log.e("MyAmplifyApp", "Query failure", error) + ); + } +} diff --git a/app/src/main/java/com/example/thrifty/MainActivity.java b/app/src/main/java/com/example/thrifty/MainActivity.java index 03cfcde..6e576f2 100644 --- a/app/src/main/java/com/example/thrifty/MainActivity.java +++ b/app/src/main/java/com/example/thrifty/MainActivity.java @@ -41,7 +41,7 @@ import java.util.List; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity { private List NewProduct = new ArrayList<>(); private List PopularProduct = new ArrayList<>(); @@ -69,7 +69,6 @@ public void onClick(View v) { }); try { -// Amplify.addPlugin(new AWSPinpointAnalyticsPlugin(getApplication())); Amplify.addPlugin(new AWSS3StoragePlugin()); Amplify.addPlugin(new AWSCognitoAuthPlugin()); Amplify.addPlugin(new AWSDataStorePlugin()); @@ -85,7 +84,6 @@ public void onClick(View v) { initRecyclerViews(); - findViewById(R.id.admin).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -93,53 +91,58 @@ public void onClick(View view) { startActivity(intent); } }); - } - public void bottomNav(){ + public void bottomNav() { BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView); bottomNavigationView.setSelectedItemId(R.id.homeNav); BottomNavigationItemView homeNav = findViewById(R.id.homeNav); BottomNavigationItemView search = findViewById(R.id.search); // BottomNavigationItemView cart = findViewById(R.id.cart); -// BottomNavigationItemView wishlist = findViewById(R.id.wishlist); + BottomNavigationItemView wishlist = findViewById(R.id.wishlist); BottomNavigationItemView profile = findViewById(R.id.profile); search.setOnClickListener(view -> { Intent intent = new Intent(getApplicationContext(), SearchActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }); homeNav.setOnClickListener(view -> { Intent intent = new Intent(getApplicationContext(), MainActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }); profile.setOnClickListener(view -> { Intent intent = new Intent(getApplicationContext(), Profile.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + }); + + wishlist.setOnClickListener(view -> { + Intent intent = new Intent(getApplicationContext(), FavouriteActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }); } - private void initRecyclerViews(){ + private void initRecyclerViews() { newItemRecView = findViewById(R.id.newItemsRecView); suggestedRecView = findViewById(R.id.suggestedRecView); popularRecView = findViewById(R.id.popularRecView); // newItemRecView.setAdapter(newItemsAdapter); - newItemRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(),RecyclerView.HORIZONTAL,false)); + newItemRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), RecyclerView.HORIZONTAL, false)); suggestedRecView.setAdapter(suggestedItemsAdapter); - suggestedRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), RecyclerView.HORIZONTAL,false)); + suggestedRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), RecyclerView.HORIZONTAL, false)); popularRecView.setAdapter(popularItemsAdapter); - popularRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(),RecyclerView.HORIZONTAL,false)); + popularRecView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), RecyclerView.HORIZONTAL, false)); - newItemRecView.setAdapter(new NewItemsAdapter(NewProduct , MainActivity.this)); + newItemRecView.setAdapter(new NewItemsAdapter(NewProduct)); Handler handler = new Handler(Looper.myLooper(), new Handler.Callback() { @SuppressLint("NotifyDataSetChanged") @Override @@ -150,7 +153,7 @@ public boolean handleMessage(@NonNull Message message) { }); - popularRecView.setAdapter(new NewItemsAdapter(PopularProduct , MainActivity.this)); + popularRecView.setAdapter(new NewItemsAdapter(PopularProduct)); Handler popularhandler = new Handler(Looper.myLooper(), new Handler.Callback() { @SuppressLint("NotifyDataSetChanged") @Override @@ -160,7 +163,7 @@ public boolean handleMessage(@NonNull Message message) { } }); - suggestedRecView.setAdapter(new NewItemsAdapter(SuggestProduct , MainActivity.this)); + suggestedRecView.setAdapter(new NewItemsAdapter(SuggestProduct)); Handler suggesthandler = new Handler(Looper.myLooper(), new Handler.Callback() { @SuppressLint("NotifyDataSetChanged") @Override @@ -212,7 +215,7 @@ protected void onResume() { stopButton.setVisibility(View.GONE); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); String email1 = sharedPreferences.getString("email", "Your email"); - if (email1.equals("jamalwari2@gmail.com")){ + if (email1.equals("jamalwari2@gmail.com")) { stopButton.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/example/thrifty/adapters/FavAdapter.java b/app/src/main/java/com/example/thrifty/adapters/FavAdapter.java new file mode 100644 index 0000000..2afe1db --- /dev/null +++ b/app/src/main/java/com/example/thrifty/adapters/FavAdapter.java @@ -0,0 +1,104 @@ +package com.example.thrifty.adapters; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.amplifyframework.api.graphql.model.ModelMutation; +import com.amplifyframework.core.Amplify; +import com.amplifyframework.datastore.generated.model.Favourites; + +import java.util.ArrayList; +import java.util.List; + +import com.amplifyframework.datastore.generated.model.Product; +import com.example.thrifty.ProductView; +import com.example.thrifty.R; + + +public class FavAdapter extends RecyclerView.Adapter { + List favouritesList = new ArrayList<>(); + List productList = new ArrayList<>(); + + public FavAdapter(List favouritesList) { + this.favouritesList = favouritesList; + } + + + @NonNull + @Override + public FavHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout, parent, false); + return new FavAdapter.FavHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull FavHolder holder, @SuppressLint("RecyclerView") int position) { + holder.favourite = favouritesList.get(position); + + TextView title = holder.itemView.findViewById(R.id.titlefrag1); + TextView category = holder.itemView.findViewById(R.id.categoryfrag); +// TextView price = holder.itemView.findViewById(R.id.price); + + title.setText(holder.favourite.getProductId()); + category.setText(holder.favourite.getUserId()); +// price.setText(holder.product.getPrice()); + } + + + @Override + public int getItemCount() { + return favouritesList.size(); + } + + + public static class FavHolder extends RecyclerView.ViewHolder { + public Favourites favourite; + public View itemView; + public Product product; + + public FavHolder(@NonNull View itemView) { + super(itemView); + this.itemView = itemView; + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(itemView.getContext()); + + String email = sharedPreferences.getString("email", "Your email"); + + Button btn = itemView.findViewById(R.id.button2); + btn.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View view) { + Toast.makeText(view.getContext(), "fav Button Clicked", Toast.LENGTH_LONG).show(); + + Favourites favourite = new Favourites.Builder() + .productId(product.getId()) + .userId(email) + .build(); + + Amplify.API.mutate( + ModelMutation.create(favourite), + response -> Log.i("MyAmplifyApp", "Added Todo with id: " + response.getData().getId()), + error -> Log.e("MyAmplifyApp", "Create failed", error) + + ); + } + }); + + } + } +} + + diff --git a/app/src/main/java/com/example/thrifty/adapters/NewItemsAdapter.java b/app/src/main/java/com/example/thrifty/adapters/NewItemsAdapter.java index 452d31d..5ab9cfd 100644 --- a/app/src/main/java/com/example/thrifty/adapters/NewItemsAdapter.java +++ b/app/src/main/java/com/example/thrifty/adapters/NewItemsAdapter.java @@ -1,7 +1,6 @@ package com.example.thrifty.adapters; import android.annotation.SuppressLint; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -18,32 +17,34 @@ import com.amplifyframework.api.graphql.model.ModelMutation; import com.amplifyframework.core.Amplify; -import com.amplifyframework.datastore.generated.model.Favorite; +import com.amplifyframework.datastore.generated.model.Favourites; import com.amplifyframework.datastore.generated.model.Product; import java.util.ArrayList; import java.util.List; +import com.amplifyframework.datastore.generated.model.User; import com.example.thrifty.MainActivity; import com.example.thrifty.ProductView; import com.example.thrifty.R; - - public class NewItemsAdapter extends RecyclerView.Adapter { List products = new ArrayList<>(); + List favourites; + List users; + - public NewItemsAdapter(List products, MainActivity mainActivity){ - this.products = products; + public NewItemsAdapter(List products) { + this.products = products; } @NonNull @Override public NewItemsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout, parent , false); - return new NewItemsAdapter.NewItemsHolder(view); + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout, parent, false); + return new NewItemsAdapter.NewItemsHolder(view); } @Override @@ -52,38 +53,11 @@ public void onBindViewHolder(@NonNull NewItemsHolder holder, @SuppressLint("Recy TextView title = holder.itemView.findViewById(R.id.titlefrag1); TextView category = holder.itemView.findViewById(R.id.categoryfrag); TextView price = holder.itemView.findViewById(R.id.price); - // TextView email = holder.itemView.findViewById(R.id.editTextTextPersonName6); - -// Button btn = holder.itemView.findViewById(R.id.button2); -// btn.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View view) { -// Toast.makeText(view.getContext(), "fav Button Clicked", Toast.LENGTH_LONG).show(); -// String name = title.getText().toString(); -// String cat = category.getText().toString(); -//// String emailText = email.getText().toString(); -// Favorite favorite = new Favorite.Builder() -// .titleFav(name) -// .imageFav("categoryFav") -// .priceFav("15") -// .sizeFav("15") -// .categoryFav(cat) -// .userId("emailText") -// .build(); -// Amplify.API.mutate( -// ModelMutation.create(favorite), -// response -> Log.i("MyAmplifyApp", "Added Todo with id: " + response.getData().getId()), -// error -> Log.e("MyAmplifyApp", "Create failed", error) -// -// ); -// } -// }); title.setText(holder.product.getTitle()); category.setText(holder.product.getCategoryId()); price.setText(holder.product.getPrice()); - holder.itemView.findViewById(R.id.card).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -97,19 +71,48 @@ public void onClick(View view) { }); } - @Override public int getItemCount() { return products.size(); } - public static class NewItemsHolder extends RecyclerView.ViewHolder{ - public Product product; + public static class NewItemsHolder extends RecyclerView.ViewHolder { + public Product product; public View itemView; + public User user; + public NewItemsHolder(@NonNull View itemView) { - super(itemView); - this.itemView = itemView; - } - } + super(itemView); + this.itemView = itemView; + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(itemView.getContext()); + + String email = sharedPreferences.getString("email", "Your email"); + + Button btn = itemView.findViewById(R.id.button2); + btn.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View view) { + Toast.makeText(view.getContext(), "fav Button Clicked", Toast.LENGTH_LONG).show(); + + Favourites favourite = new Favourites.Builder() + .productId(product.getId()) + .userId(email) + .build(); + + Amplify.API.mutate( + ModelMutation.create(favourite), + response -> Log.i("MyAmplifyApp", "Added Todo with id: " + response.getData().getId()), + error -> Log.e("MyAmplifyApp", "Create failed", error) + + ); + } + }); + + } + + + } } diff --git a/app/src/main/res/layout/activity_favourite.xml b/app/src/main/res/layout/activity_favourite.xml new file mode 100644 index 0000000..02dbd7a --- /dev/null +++ b/app/src/main/res/layout/activity_favourite.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/card_layout.xml b/app/src/main/res/layout/card_layout.xml index a6861d2..38f5749 100644 --- a/app/src/main/res/layout/card_layout.xml +++ b/app/src/main/res/layout/card_layout.xml @@ -21,7 +21,6 @@