diff --git a/DdamiApp/app/build.gradle b/DdamiApp/app/build.gradle index 3defeab..5af4fca 100644 --- a/DdamiApp/app/build.gradle +++ b/DdamiApp/app/build.gradle @@ -33,19 +33,19 @@ android { dependencies { //implementation 'com.android.support:design:28.0.0' - def nav_version = "2.3.0-rc01" + def nav_version = '2.3.0' def kotlin_version = "1.3.72" - def retrofitVersion = "2.6.4" + def retrofitVersion = '2.9.0' implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.navigation:navigation-fragment:2.3.0' implementation 'androidx.navigation:navigation-ui:2.3.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - testImplementation 'junit:junit:4.12' + testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' @@ -74,7 +74,7 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' //circle image - implementation 'de.hdodenhof:circleimageview:2.1.0' + implementation 'de.hdodenhof:circleimageview:3.1.0' //retrofit @@ -84,18 +84,19 @@ dependencies { //rx implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' - implementation 'io.reactivex.rxjava2:rxjava:2.2.16' - implementation "io.reactivex.rxjava2:rxkotlin:2.3.0" + implementation 'io.reactivex.rxjava2:rxjava:2.2.19' + implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' implementation 'com.android.volley:volley:1.1.0' - implementation 'com.google.code.gson:gson:2.3.1' + implementation 'com.google.code.gson:gson:2.8.6' //push alarm - implementation 'com.google.android.gms:play-services-auth:17.0.0' - implementation 'com.google.firebase:firebase-messaging:20.0.1' + implementation 'com.google.android.gms:play-services-auth:18.1.0' + implementation 'com.google.firebase:firebase-messaging:20.2.4' } repositories { mavenCentral() } + diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/MainActivity.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/MainActivity.java index fe40eb6..1dca971 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/MainActivity.java +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/MainActivity.java @@ -14,6 +14,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.navigation.ui.AppBarConfiguration; @@ -53,9 +54,10 @@ public class MainActivity extends AppCompatActivity { BottomNavigationView bottomNavigationView; Button btn_verification; TextView nav_main, nav_myroom, nav_like, nav_shop, nav_purchase, nav_shop_like, nav_activities, nav_interested_activities, nav_settings; - TextView nav_header_program; + TextView nav_header_program, nav_tv_name; ImageView nav_profile_img; Fragment fragment; + String token; @Override protected void onCreate(Bundle savedInstanceState) { @@ -64,7 +66,7 @@ protected void onCreate(Bundle savedInstanceState) { initViews(); String id = getIntent().getStringExtra("id"); - String token = getIntent().getStringExtra("token"); + token = getIntent().getStringExtra("token"); Toast.makeText(this, "id = " + id + "token = " + token, Toast.LENGTH_LONG).show(); @@ -80,12 +82,11 @@ protected void onCreate(Bundle savedInstanceState) { nav_settings = (TextView) findViewById(R.id.nav_settings); nav_header_program = (TextView) findViewById(R.id.nav_header_program); nav_profile_img = (ImageView) findViewById(R.id.nav_profile_img); - + nav_tv_name = (TextView) findViewById(R.id.textView_name); Bundle bundle = new Bundle(); JsonObject input = new JsonObject(); - String token2 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZjMxMzlhOGNiMGUwZjQyZDBhMDJiOWEiLCJ1c2VySWQiOiJ0ZXN0IiwiaWF0IjoxNTk3MjU0MjgzLCJleHAiOjE1OTc4NTkwODMsImlzcyI6ImRkYW1pLmNvbSIsInN1YiI6InVzZXJJbmZvIn0.vXZr-6P0IQXNYaknHIgqBhXUlOnknobDU9uY2ojPVGk"; - input.addProperty("token", token2); + input.addProperty("token", token); ApiService.INSTANCE.getMyroomUser().myroom(input) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -93,7 +94,7 @@ protected void onCreate(Bundle savedInstanceState) { it -> { Log.e("sss@@@!!!", it.toString()); bundle.putBoolean("Myroom", true); - bundle.putString("Id", it.getMyInfo().getUserId()); + bundle.putString("UserId", it.getMyInfo().getUserId()); for (int i = 0; i < it.getMyInfo().getLikeField().size(); i++) { bundle.putString("LikeField" + String.valueOf(i), it.getMyInfo().getLikeField().get(i).toString()); } @@ -109,8 +110,10 @@ protected void onCreate(Bundle savedInstanceState) { bundle.putString("ProfileImg", it.getMyInfo().getImageUrl()); bundle.putString("Program", it.getMyInfo().getStudent().getDepartment()); - //set profile img + //set profile nav_profile Picasso.get().load(it.getMyInfo().getImageUrl()).into(nav_profile_img); + nav_tv_name.setText(it.getMyInfo().getUserName()); + }, it -> { Log.e("fff@@@!!!", it.toString()); @@ -118,7 +121,7 @@ protected void onCreate(Bundle savedInstanceState) { ); JsonObject input_v = new JsonObject(); - input_v.addProperty("token", token2); + input_v.addProperty("token", token); ApiService.INSTANCE.getMyInfo().myinfo(input_v) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -160,6 +163,7 @@ public void onClick(View v) { public void onClick(View v) { MyRoomFragment myroom = new MyRoomFragment(); drawerLayout.closeDrawers(); + bundle.putString("token", token); myroom.setArguments(bundle); replaceFragment(myroom); } @@ -251,9 +255,8 @@ public void onClick(View v) { //화면 전환 public void replaceFragment(Fragment fr) { - Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); - if(fragment != null) - getSupportFragmentManager().beginTransaction().remove(fragment).add(R.id.nav_host_fragment,fr).commit(); + getSupportFragmentManager().popBackStack(); + getSupportFragmentManager().beginTransaction().add(R.id.nav_host_fragment, fr).addToBackStack("a").commit(); } private void initViews() { @@ -319,6 +322,8 @@ public void setActionBarTitle(String title) { //open verifiedActivity private void openNewActivity() { - startActivity(new Intent(getApplicationContext(), VerificationActivity.class)); + Intent intent = new Intent(getApplicationContext(), VerificationActivity.class); + intent.putExtra("token", token); + startActivity(intent); } } \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/login/LoginActivity.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/login/LoginActivity.kt index 1f0e7b1..a924f21 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/login/LoginActivity.kt +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/login/LoginActivity.kt @@ -24,58 +24,68 @@ class LoginActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) - keyboardVisibilityUtils = KeyboardVisibilityUtils(window, - onShowKeyboard = { keyboardHeight -> - sv_login.run { - smoothScrollTo(scrollX, scrollY + keyboardHeight) - } - }) - btn_sign_up.setOnClickListener { - val id = et_id.text.toString() - val pw = et_name.text.toString() - val inputJson = JsonObject() - - inputJson.addProperty("userId", id) - inputJson.addProperty("userPassword", pw) - - login(inputJson) - } - - tv_signUp.setOnClickListener { - val signUpIntent = Intent(this@LoginActivity, SignUpActivity::class.java) - startActivity(signUpIntent) - } + val intent = Intent(this@LoginActivity, MainActivity::class.java) + startActivity(intent) + finish() } - @SuppressLint("CheckResult") - fun login(input: JsonObject) { - ApiService.loginService.login(input) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - Toast.makeText(applicationContext, "로그인 성공", Toast.LENGTH_SHORT).show() - val intent = Intent(this@LoginActivity, MainActivity::class.java) - intent.putExtra("token", it.token) - intent.putExtra("id", input.get("userId").toString()) - startActivity(intent) - finish() - }, { - Toast.makeText(applicationContext, "$it", Toast.LENGTH_SHORT).show() - Log.e("영환", it.toString()) - }) - } - override fun onBackPressed() { - if (supportFragmentManager.backStackEntryCount == 0) { - if (System.currentTimeMillis() - backTime < 2000) { - finish() - } - Toast.makeText(this, "종료하시려면 다시한번 눌러주세요.", Toast.LENGTH_SHORT).show() - backTime = System.currentTimeMillis() - } else { - supportFragmentManager.popBackStack() - } - } + +// val intent = Intent(this@LoginActivity, MainActivity::class.java) +// +// keyboardVisibilityUtils = KeyboardVisibilityUtils(window, +// onShowKeyboard = { keyboardHeight -> +// sv_login.run { +// smoothScrollTo(scrollX, scrollY + keyboardHeight) +// } +// }) +// +// btn_sign_up.setOnClickListener { +// val id = et_id.text.toString() +// val pw = et_name.text.toString() +// val inputJson = JsonObject() +// +// inputJson.addProperty("userId", id) +// inputJson.addProperty("userPassword", pw) +// +// login(inputJson) +// } +// +// tv_signUp.setOnClickListener { +// val signUpIntent = Intent(this@LoginActivity, SignUpActivity::class.java) +// startActivity(signUpIntent) +// } +// } +// +// @SuppressLint("CheckResult") +// fun login(input: JsonObject) { +// ApiService.loginService.login(input) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe({ +// Toast.makeText(applicationContext, "로그인 성공", Toast.LENGTH_SHORT).show() +// val intent = Intent(this@LoginActivity, MainActivity::class.java) +// intent.putExtra("token", it.token) +// intent.putExtra("id", input.get("userId").toString()) +// startActivity(intent) +// finish() +// }, { +// Toast.makeText(applicationContext, "$it", Toast.LENGTH_SHORT).show() +// Log.e("영환", it.toString()) +// }) +// } +// +// override fun onBackPressed() { +// if (supportFragmentManager.backStackEntryCount == 0) { +// if (System.currentTimeMillis() - backTime < 2000) { +// finish() +// } +// Toast.makeText(this, "종료하시려면 다시한번 눌러주세요.", Toast.LENGTH_SHORT).show() +// backTime = System.currentTimeMillis() +// } else { +// supportFragmentManager.popBackStack() +// } +// } } diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerificationActivity.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerificationActivity.java index c828781..c44c2fc 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerificationActivity.java +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerificationActivity.java @@ -11,6 +11,7 @@ import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; +import android.provider.Settings; import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -28,8 +29,12 @@ import com.doubleslash.ddamiapp.activity.MainActivity; import com.doubleslash.ddamiapp.network.kotlin.ApiService; import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.squareup.picasso.Picasso; +import org.json.JSONArray; +import org.json.JSONObject; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -50,7 +55,8 @@ public class VerificationActivity extends AppCompatActivity implements View.OnCl File tempFile = null; String pictureFilePath; EditText et_school, et_program, et_studentId; - List likeFields = new ArrayList(); + JSONArray likeFields = new JSONArray(); + String token; @Override protected void onCreate(Bundle savedInstanceState) { @@ -58,6 +64,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.fragment_verification); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + token=getIntent().getStringExtra("token"); btn_modern = (Button) findViewById(R.id.btn_modern_art); btn_graphic = (Button) findViewById(R.id.btn_graphic_design); btn_craft = (Button) findViewById(R.id.btn_craft_art); @@ -144,7 +151,7 @@ public void onClick(View view) { public void addIfSelected(Button b) { if(b.isSelected()) { - likeFields.add(b.getText().toString()); + likeFields.put(b.getText().toString()); } } @@ -272,7 +279,6 @@ private void showMsg(int i) { } private void verify(JsonObject inputJson) { - String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZjMxMzlhOGNiMGUwZjQyZDBhMDJiOWEiLCJ1c2VySWQiOiJ0ZXN0IiwiaWF0IjoxNTk3MjU0MjgzLCJleHAiOjE1OTc4NTkwODMsImlzcyI6ImRkYW1pLmNvbSIsInN1YiI6InVzZXJJbmZvIn0.vXZr-6P0IQXNYaknHIgqBhXUlOnknobDU9uY2ojPVGk"; inputJson.addProperty("token", token); ApiService.INSTANCE.getVerifyUser().verify(inputJson) .subscribeOn(Schedulers.io()) diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerifiedActivity.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerifiedActivity.java new file mode 100644 index 0000000..a82ff52 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/activity/verification/VerifiedActivity.java @@ -0,0 +1,41 @@ +package com.doubleslash.ddamiapp.activity.verification; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +import androidx.appcompat.app.AppCompatActivity; + +import com.doubleslash.ddamiapp.R; +import com.doubleslash.ddamiapp.activity.MainActivity; + +public class VerifiedActivity extends AppCompatActivity { + Button btn_goto_main; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.fragment_verified); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + btn_goto_main = (Button) findViewById(R.id.btn_goto_main); + btn_goto_main.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + goToMain(); + } + }); + } + + public void goToMain() { + Intent intent = new Intent(this, MainActivity.class); + startActivity(intent); + } + + @Override + public boolean onNavigateUp() { + finish(); + return true; + } +} \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MainFragment.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MainFragment.java index f71552b..473ee77 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MainFragment.java +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MainFragment.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; +import com.doubleslash.ddamiapp.activity.DetailActivity; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -18,10 +19,12 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import androidx.recyclerview.widget.RecyclerView; import com.doubleslash.ddamiapp.R; -import com.doubleslash.ddamiapp.activity.DetailActivity; +//import com.doubleslash.ddamiapp.activity.DetailActivity; import com.doubleslash.ddamiapp.activity.MainActivity; import com.doubleslash.ddamiapp.activity.login.CustomBaseView; import com.doubleslash.ddamiapp.adapter.MainAdapter; @@ -59,7 +62,7 @@ public class MainFragment extends Fragment implements OnItemClickListener, OnIte private BehaviorSubject mSortType; private BehaviorSubject mFilterType; - + Bundle bundle = new Bundle(); public static MainFragment newInstance() { return new MainFragment(); @@ -188,7 +191,8 @@ private void pieceSearch(String sortType) { piece.getAuthor().getUserId(), piece.getAuthor().getImageUrl(), piece.getViews(), - piece.getLikeCount())); + piece.getLikeCount(), + piece.getId())); } recyclerView.setAdapter(new MainAdapter(items, this::onHomeViewItemClicked, this::onHomeProfileItemClicked)); }, it -> { @@ -234,12 +238,16 @@ public void onHomeViewItemClicked(MainItem item) { detailIntent.putExtra("token", token); detailIntent.putExtra("FileId", item.getPieceId()); startActivity(detailIntent); - } @Override public void onHomeProfileItemClicked(MainItem item) { - Toast.makeText(getContext(), item.getNickname(), Toast.LENGTH_SHORT).show(); + bundle.putString("AuthId", item.getAuthId()); + MyRoomFragment myroom = new MyRoomFragment(); + myroom.setArguments(bundle); + FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); + fragmentManager.popBackStack(); + fragmentManager.beginTransaction().replace(R.id.nav_host_fragment, myroom).commit(); } private void initRx() { diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MyRoomFragment.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MyRoomFragment.java index 42c117e..3594a21 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MyRoomFragment.java +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/fragment/MyRoomFragment.java @@ -19,10 +19,11 @@ import androidx.recyclerview.widget.RecyclerView; import com.doubleslash.ddamiapp.R; -import com.doubleslash.ddamiapp.activity.MainActivity; +import com.doubleslash.ddamiapp.activity.DetailActivity; import com.doubleslash.ddamiapp.activity.WritingActivity; import com.doubleslash.ddamiapp.adapter.MyroomAdapter; import com.doubleslash.ddamiapp.model.MyroomItem; +import com.doubleslash.ddamiapp.model.UserRoomInfo; import com.doubleslash.ddamiapp.network.kotlin.ApiService; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.tabs.TabLayout; @@ -44,15 +45,20 @@ public class MyRoomFragment extends Fragment { RecyclerView recyclerView; Button btn_modify, btn_follow; FloatingActionButton btn_fab; + //Bundle bundle = new Bundle(); + ArrayList itemL = new ArrayList<>(); + int flag = 1; + String token; + String authId; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_my_room, container, false); + token = getArguments().getString("token"); tabLayout = (TabLayout) view.findViewById(R.id.tabLayout); btn_fab = (FloatingActionButton) view.findViewById(R.id.fab_myroom); name = (TextView) view.findViewById(R.id.name); @@ -66,59 +72,42 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, btn_modify = (Button) view.findViewById(R.id.btn_modify); btn_follow = (Button) view.findViewById(R.id.btn_follow); ImageView imgView = (ImageView) view.findViewById(R.id.myroom_itemimage); + authId = getArguments().getString("AuthId"); - if (!getArguments().getBoolean("Myroom")) { - btn_fab.setVisibility(View.GONE); - btn_modify.setVisibility(View.GONE); -// btn_follow.setVisibility(View.VISIBLE); - } - - btn_follow.setVisibility(View.VISIBLE); - //get values from bundle - String input_id = getArguments().getString("Id"); - int input_field_size = getArguments().getInt("FieldCount"); - int input_follow = getArguments().getInt("Follow"); - int input_follower = getArguments().getInt("Follower"); - String input_username = getArguments().getString("Username"); - String input_profile_img = getArguments().getString("ProfileImg"); - int input_file_count = getArguments().getInt("FileCount"); - String input_program = getArguments().getString("Program"); - - String fields = ""; - for (int i = 0; i < input_field_size; i++) { - String input_like_field = getArguments().getString("LikeField" + String.valueOf(i)); - if (i != 0) { - fields = fields.concat(" · " + input_like_field); - } else fields = fields.concat(input_like_field); - } - - ArrayList itemL = new ArrayList<>(); - for (int i = 0; i < input_file_count; i++) { - String input_file = getArguments().getString("File" + String.valueOf(i)); - String input_file_id = getArguments().getString("FileId" + String.valueOf(i)); - MyroomItem item = new MyroomItem(input_file, input_file_id); - itemL.add(item); + if(getArguments().getBoolean("Myroom")) { + btn_fab.setVisibility(View.VISIBLE); + btn_modify.setVisibility(View.VISIBLE); + btn_follow.setVisibility(View.GONE); + myroom(); + } else { + JsonObject json = new JsonObject(); + json.addProperty("token", token); + ApiService.INSTANCE.getMyInfo().myinfo(json) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + it -> { + //if authid == myid show myroom() + if(it.getMyInfo().getId().equals(authId)) { + btn_fab.setVisibility(View.VISIBLE); + btn_modify.setVisibility(View.VISIBLE); + btn_follow.setVisibility(View.GONE); + userroom(); + //if authid != myid show userroom() + } else if(!it.getMyInfo().getId().equals(getArguments().getString("AuthId"))){ + btn_fab.setVisibility(View.GONE); + btn_modify.setVisibility(View.GONE); + btn_follow.setVisibility(View.VISIBLE); + userroom(); + } + }, + it -> { + Log.e("fff@@@!!!", it.toString()); + } + ); } - //add values to the profile layout - name.setText(input_username); - id.setText(input_id); - program.setText(input_program); - field.setText(fields); - followerNum.setText(String.valueOf(input_follower)); - followingNum.setText(String.valueOf(input_follow)); - Picasso.get().load(input_profile_img).into(profileImg); - - //Create tabs on TabLayout - TabLayout.Tab tab = null; - tab = tabLayout.newTab().setText("전체분야 " + String.valueOf(input_file_count)); - tabLayout.addTab(tab); - tab = tabLayout.newTab().setText("커스텀목록1"); - tabLayout.addTab(tab); - tab = tabLayout.newTab().setText("커스텀목록2"); - tabLayout.addTab(tab); - tab = tabLayout.newTab().setText("커스텀목록3"); - tabLayout.addTab(tab); + followUnfollow(authId); RecyclerView.Adapter adapter = new MyroomAdapter(itemL); recyclerView.setAdapter(adapter); @@ -132,6 +121,7 @@ public boolean onSingleTapUp(MotionEvent e) { } }); + //when recyclerview item clicked, go to DetailActivity RecyclerView.OnItemTouchListener onItemTouchListener = new RecyclerView.OnItemTouchListener() { @Override public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) { @@ -146,8 +136,8 @@ public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEv Log.e("hhhhere", "현재 터치한 item의 position은 " + currentItem.getId()); //switch fragment to DetailActivity onItemClicked - Intent intent = new Intent(getActivity(), MainActivity.class); - intent.putExtra("FileId", currentItem.getId()); + Intent intent = new Intent(getActivity(), DetailActivity.class); + //intent.putExtra("FileId", currentItem.getId()); startActivity(intent); return true; } @@ -164,7 +154,7 @@ public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { }; recyclerView.addOnItemTouchListener(onItemTouchListener); - + //FloatingActionButton onClick event btn_fab.setOnClickListener(new View.OnClickListener() { @Override @@ -179,18 +169,22 @@ public void onClick(View view) { btn_follow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - JsonObject input = new JsonObject(); - String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZjMxMzlhOGNiMGUwZjQyZDBhMDJiOWEiLCJ1c2VySWQiOiJ0ZXN0IiwiaWF0IjoxNTk3MjU0MjgzLCJleHAiOjE1OTc4NTkwODMsImlzcyI6ImRkYW1pLmNvbSIsInN1YiI6InVzZXJJbmZvIn0.vXZr-6P0IQXNYaknHIgqBhXUlOnknobDU9uY2ojPVGk"; - input.addProperty("token", token); - ApiService.INSTANCE.getFollowService().follow("5f34f2f999fef948e0f8b10b",input) + ApiService.INSTANCE.getFollowService().follow(token,authId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( it -> { - Log.e("sss!!!", it.toString()); + Log.e("follow/unfollow!!", it.toString()); + if(btn_follow.getText().toString().equals("+ Follow")) { + btn_follow.setText("Unfollow"); + } else if(btn_follow.getText().toString().equals("Unfollow")) { + btn_follow.setText("+ Follow"); + } + userroom(); + flag++; }, it -> { - Log.e("fff!!!", it.toString()); + Log.e("fail!!!", it.toString()); } ); } @@ -198,4 +192,126 @@ public void onClick(View view) { return view; } + + public void myroom() { + String fields = ""; + for (int i = 0; i < getArguments().getInt("FieldCount"); i++) { + String input_like_field = getArguments().getString("LikeField" + String.valueOf(i)); + if (i != 0) { + fields = fields.concat(" · " + input_like_field); + } else fields = fields.concat(input_like_field); + } + + for (int i = 0; i < getArguments().getInt("FileCount"); i++) { + String input_file = getArguments().getString("File" + String.valueOf(i)); + String input_file_id = getArguments().getString("FileId" + String.valueOf(i)); + MyroomItem item = new MyroomItem(input_file, input_file_id); + itemL.add(item); + } + + UserRoomInfo user = new UserRoomInfo( + getArguments().getString("Username"), + getArguments().getString("UserId"), + getArguments().getString("Program"), + fields, + getArguments().getInt("Follow"), + getArguments().getInt("Follower"), + itemL, + getArguments().getString("ProfileImg") + ); + + name.setText(user.getName()); + id.setText(user.getUserId()); + program.setText(user.getProgram()); + field.setText(user.getField()); + followerNum.setText(String.valueOf(user.getFollower())); + followingNum.setText(String.valueOf(user.getFollowing())); + Picasso.get().load(user.getProfile()).into(profileImg); + createTab(getArguments().getInt("FileCount")); + } + + public void userroom() { + ApiService.INSTANCE.getUserRoomService().userroom(authId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + it -> { + Log.e("sssssssssssssssssucc", it.toString()); + String str = ""; + for (int i = 0; i < it.getUser().getLikeField().size(); i++) { + if (i != 0) { + str = str.concat(" · " + it.getUser().getLikeField().get(i)); + } else + str = str.concat(it.getUser().getLikeField().get(i).toString()); + } + + for (int i = 0; i < it.getUser().getMyPieces().size(); i++) { + String input_file = it.getUser().getMyPieces().get(i).getFileUrl().get(0); + String input_file_id = it.getUser().getMyPieces().get(i).getId(); + MyroomItem item = new MyroomItem(input_file, input_file_id); + itemL.add(item); + } + + UserRoomInfo user = new UserRoomInfo( + it.getUser().getUserName(), + it.getUser().getUserId(), + it.getUser().getStudent().getDepartment(), + str, + it.getUser().getFollow(), + it.getUser().getFollowerCount(), + itemL, + it.getUser().getImageUrl() + ); + + name.setText(user.getName()); + id.setText(user.getUserId()); + field.setText(user.getField()); + program.setText(user.getProgram()); + followerNum.setText(String.valueOf(user.getFollower())); + followingNum.setText(String.valueOf(user.getFollowing())); + Picasso.get().load(user.getProfile()).into(profileImg); + if(flag==1) { + createTab(user.getFile().size()); + } + }, + it -> { + Log.e("fffffffffffail", it.toString()); + } + ); + } + + public void createTab(int i) { + //Create tabs on TabLayout + TabLayout.Tab tab = null; + tab = tabLayout.newTab().setText("전체분야 " + String.valueOf(i)); + tabLayout.addTab(tab); + tab = tabLayout.newTab().setText("커스텀목록1"); + tabLayout.addTab(tab); + tab = tabLayout.newTab().setText("커스텀목록2"); + tabLayout.addTab(tab); + tab = tabLayout.newTab().setText("커스텀목록3"); + tabLayout.addTab(tab); + } + + private void followUnfollow(String authId) { + JsonObject input = new JsonObject(); + ApiService.INSTANCE.getFollowService().checkFollow(input) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + it -> { + for(int i=0; i { + Log.e("followfail!!!", it.toString()); + } + ); + } } diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorSearchDAO.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorSearchDAO.kt new file mode 100644 index 0000000..da1146a --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorSearchDAO.kt @@ -0,0 +1,11 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class AuthorSearchDAO( + @SerializedName("authors") + val authors: List, + @SerializedName("result") + val result: Int +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorX.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorX.kt new file mode 100644 index 0000000..588788c --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/AuthorX.kt @@ -0,0 +1,21 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class AuthorX( + @SerializedName("followByMe") + val followByMe: Boolean, + @SerializedName("follower") + val follower: List, + @SerializedName("_id") + val id: String, + @SerializedName("imageUrl") + val imageUrl: String, + @SerializedName("likeField") + val likeField: List, + @SerializedName("stateMessage") + val stateMessage: String, + @SerializedName("userId") + val userId: String +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MainItem.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MainItem.java index 2eda348..9af49b4 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MainItem.java +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MainItem.java @@ -8,8 +8,9 @@ public class MainItem { private String thumbnail; private int viewCount; private int likeCount; + private String authId; - public MainItem(String pieceId, String image, String title, String nickname, String thumbnail, int viewCount, int likeCount) { + public MainItem(String pieceId, String image, String title, String nickname, String thumbnail, int viewCount, int likeCount, String authId) { this.image = image; this.title = title; this.nickname = nickname; @@ -17,6 +18,7 @@ public MainItem(String pieceId, String image, String title, String nickname, Str this.viewCount = viewCount; this.likeCount = likeCount; this.pieceId = pieceId; + this.authId = authId; } public String getPieceId() { @@ -74,4 +76,12 @@ public String getNickname() { public void setNickname(String nickname) { this.nickname = nickname; } + + public String getAuthId() { + return authId; + } + + public void setAuthId(String authId) { + this.authId = authId; + } } diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MyPieceX.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MyPieceX.kt new file mode 100644 index 0000000..dafdcb0 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/MyPieceX.kt @@ -0,0 +1,21 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class MyPieceX( + @SerializedName("description") + val description: String, + @SerializedName("fileUrl") + val fileUrl: List, + @SerializedName("_id") + val id: String, + @SerializedName("like") + val like: List, + @SerializedName("likeCount") + val likeCount: Int, + @SerializedName("title") + val title: String, + @SerializedName("views") + val views: Int +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/StudentX.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/StudentX.kt new file mode 100644 index 0000000..5b5fed6 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/StudentX.kt @@ -0,0 +1,13 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class StudentX( + @SerializedName("department") + val department: String, + @SerializedName("_id") + val id: String, + @SerializedName("university") + val university: String +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomDAO.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomDAO.kt new file mode 100644 index 0000000..8c3f6b8 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomDAO.kt @@ -0,0 +1,11 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class UserRoomDAO( + @SerializedName("result") + val result: Int, + @SerializedName("user") + val user: UserX +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomInfo.java b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomInfo.java new file mode 100644 index 0000000..14de9d1 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserRoomInfo.java @@ -0,0 +1,92 @@ +package com.doubleslash.ddamiapp.model; + +import java.util.ArrayList; +import java.util.List; + +public class UserRoomInfo { + private String name; + private String userid; + private String program; + private String field; + private int followerNum; + private int followingNum; + private ArrayList file; + private String profileImg; + + public UserRoomInfo(String name, String userid, String program, String field, int followingNum, int followerNum, ArrayList file, String profileImg) { + this.name = name; + this.userid = userid; + this.program = program; + this.field = field; + this.followerNum = followerNum; + this.followingNum = followingNum; + this.file = file; + this.profileImg = profileImg; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUserId() { + return userid; + } + + public void setUserId(String userid) { + this.userid = userid; + } + + public String getProgram() { + return program; + } + + public void setProgram(String program) { + this.program = program; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public int getFollower() { + return followerNum; + } + + public void setFollower(int followerNum) { + this.followerNum = followerNum; + } + + public int getFollowing() { + return followingNum; + } + + public void setFollowing(int followingNum) { + this.followingNum = followingNum; + } + + public ArrayList getFile() { + return file; + } + + public void setFile(ArrayList file) { + this.file = file; + } + + public String getProfile() { + return profileImg; + } + + public void setProfile(String profileImg) { + this.profileImg = profileImg; + } + + +} diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserX.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserX.kt new file mode 100644 index 0000000..990778d --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/model/UserX.kt @@ -0,0 +1,29 @@ +package com.doubleslash.ddamiapp.model + + +import com.google.gson.annotations.SerializedName + +data class UserX( + @SerializedName("follow") + val follow: Int, + @SerializedName("followerCount") + val followerCount: Int, + @SerializedName("_id") + val id: String, + @SerializedName("imageUrl") + val imageUrl: String, + @SerializedName("likeField") + val likeField: List, + @SerializedName("myPieces") + val myPieces: List, + @SerializedName("state") + val state: Boolean, + @SerializedName("stateMessage") + val stateMessage: String, + @SerializedName("student") + val student: StudentX, + @SerializedName("userId") + val userId: String, + @SerializedName("userName") + val userName: String +) \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/ApiService.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/ApiService.kt index 02e3fc3..9ed6cf6 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/ApiService.kt +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/ApiService.kt @@ -42,6 +42,10 @@ object ApiService { retrofit.create(UserApi::class.java) } + val userRoomService : UserRoomApi by lazy { + retrofit.create(UserRoomApi::class.java) + } + val signUpService : SignUpApi by lazy { retrofit.create(SignUpApi::class.java) } @@ -57,5 +61,4 @@ object ApiService { val followService : FollowApi by lazy { retrofit.create(FollowApi::class.java) } - } \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/FollowApi.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/FollowApi.kt index b49240c..ad9f955 100644 --- a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/FollowApi.kt +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/FollowApi.kt @@ -1,15 +1,14 @@ package com.doubleslash.ddamiapp.network.kotlin -import com.doubleslash.ddamiapp.model.FollowDAO -import com.doubleslash.ddamiapp.model.HomeDAO -import com.doubleslash.ddamiapp.model.UserAuthDAO +import com.doubleslash.ddamiapp.model.* import com.google.gson.JsonObject import io.reactivex.Single -import retrofit2.http.Body -import retrofit2.http.POST -import retrofit2.http.Path +import retrofit2.http.* interface FollowApi { @POST("/user/follow/{id}") - fun follow(@Path("id") Id : String, @Body Body:JsonObject) : Single + fun follow(@Header("x-access-token") token : String, @Path("id") id :String) : Single + + @POST("/api/author/search") + fun checkFollow(@Body Body : JsonObject) : Single } \ No newline at end of file diff --git a/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/UserRoomApi.kt b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/UserRoomApi.kt new file mode 100644 index 0000000..b6f2bd3 --- /dev/null +++ b/DdamiApp/app/src/main/java/com/doubleslash/ddamiapp/network/kotlin/UserRoomApi.kt @@ -0,0 +1,14 @@ +package com.doubleslash.ddamiapp.network.kotlin + +import com.doubleslash.ddamiapp.model.MyroomPageDAO +import com.doubleslash.ddamiapp.model.UserRoomDAO +import com.google.gson.JsonObject +import io.reactivex.Single +import retrofit2.http.Body +import retrofit2.http.POST +import retrofit2.http.Path + +interface UserRoomApi { + @POST("/user/detail/{id}" ) + fun userroom(@Path("id") id : String): Single +} \ No newline at end of file diff --git a/DdamiApp/app/src/main/res/drawable/myroom_img_shape.xml b/DdamiApp/app/src/main/res/drawable/myroom_img_shape.xml index ef2912a..218e2d1 100644 --- a/DdamiApp/app/src/main/res/drawable/myroom_img_shape.xml +++ b/DdamiApp/app/src/main/res/drawable/myroom_img_shape.xml @@ -4,6 +4,6 @@ - + android:bottomRightRadius="6dp"> + \ No newline at end of file diff --git a/DdamiApp/app/src/main/res/layout/activity_shop_writing_activity1_1.xml b/DdamiApp/app/src/main/res/layout/activity_shop_writing_activity1_1.xml index eac9bd7..3f6c4ef 100644 --- a/DdamiApp/app/src/main/res/layout/activity_shop_writing_activity1_1.xml +++ b/DdamiApp/app/src/main/res/layout/activity_shop_writing_activity1_1.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".activity.Shop.ShopWritingActivity1_1"> + tools:context=".activity.shop.ShopWritingActivity1_1"> - - + - - - \ No newline at end of file + + \ No newline at end of file diff --git a/DdamiApp/app/src/main/res/layout/nav_drawer_menu.xml b/DdamiApp/app/src/main/res/layout/nav_drawer_menu.xml index 09f6ede..5b48fca 100644 --- a/DdamiApp/app/src/main/res/layout/nav_drawer_menu.xml +++ b/DdamiApp/app/src/main/res/layout/nav_drawer_menu.xml @@ -30,7 +30,7 @@ android:textSize="15dp" android:textColor="#232323" android:clickable="true" - android:visibility="visible"/> + android:visibility="gone"/> - - - - - - - - - - - - -