From f496392b24eb9c9a38498cbbf03159ef5aa037d1 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期一, 21 四月 2025 15:38:08 +0800
Subject: [PATCH] 1.好友邀请-我的邀请记录:列表样式重写,图片显示 2.已登录的用户点击应用图标之后直接登录
---
app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt | 216 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 192 insertions(+), 24 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
index 455a039..1d26709 100644
--- a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
@@ -11,17 +11,32 @@
import android.view.ViewGroup
import android.widget.EditText
import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
+import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.example.firstapp.R
import com.example.firstapp.activity.ContentDetailActivity
+import com.example.firstapp.activity.ReminderSettingsActivity
import com.example.firstapp.database.service.RetrofitClient
import com.example.firstapp.databinding.FragmentNotificationsBinding
+import com.example.firstapp.pay.PayAbility
import com.example.firstapp.ui.reminderOther.ReminderOtherAddActivity2
import com.example.firstapp.ui.reminderOther.ReminderSettingsFragmentOther
+import com.example.firstapp.ui.profile.EditProfileActivity
+import com.example.firstapp.utils.Log
+import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.launch
+import com.bumptech.glide.Glide
+import com.example.firstapp.activity.SettingActivity
+import com.example.firstapp.activity.VipActivity
+import com.example.firstapp.database.response.UserInfo
+import com.example.firstapp.ui.invitation.InvitationActivity
+import com.example.firstapp.utils.PreferencesManager
class NotificationsFragment : Fragment() {
@@ -40,6 +55,33 @@
private var xiaohongshuUrl = ""
private var contactEmail = ""
private var shareText = ""
+ private var currentUserInfo: UserInfo? = null // 确保使用你的实际数据类
+
+
+ private val editProfileLauncher = registerForActivityResult(
+ ActivityResultContracts.StartActivityForResult()
+ ) { result ->
+ if (result.resultCode == AppCompatActivity.RESULT_OK) {
+ result.data?.let { data ->
+ // 更新昵称
+ val newNickname = data.getStringExtra("nickname")
+ newNickname?.let {
+ binding.tvNickname.text = it
+ }
+
+ // 更新头像
+ val avatarUri = data.getStringExtra("avatar_uri")
+ avatarUri?.let {
+ Glide.with(requireContext())
+ .load(Uri.parse(it))
+ .circleCrop()
+ .into(binding.ivAvatar)
+ }
+
+ // TODO: 将更新后的信息保存到服务器
+ }
+ }
+ }
override fun onCreateView(
inflater: LayoutInflater,
@@ -55,6 +97,14 @@
}
return binding.root
+ }
+
+ override fun onResume() {
+ super.onResume()
+ // 加载用户信息
+ lifecycleScope.launch {
+ loadUserInfo()
+ }
}
private suspend fun loadConfigurations() {
@@ -91,51 +141,114 @@
}
private fun setupClickListeners() {
+
// 设置提醒
- binding.settingsReminder.setOnClickListener {
- // 跳转到设置提醒页面
- findNavController().navigate(R.id.action_navigation_notifications_to_reminderSettingsFragment)
+ binding.layoutReminder.setOnClickListener {
+ // 判断是否是会员
+ currentUserInfo?.let { user ->
+ if (user.isMember) {
+ // 是会员,跳转到提醒设置页面
+ val intent = Intent(requireContext(), ReminderSettingsActivity::class.java)
+ startActivity(intent)
+ } else {
+ // 不是会员,跳转到VIP页面
+ val intent = Intent(requireContext(), VipActivity::class.java)
+ intent.putExtra("source", "reminder")
+ startActivity(intent)
+ Toast.makeText(context, "开通会员后可使用提醒功能", Toast.LENGTH_SHORT).show()
+ }
+ } ?: run {
+ Toast.makeText(context, "正在加载用户信息,请稍后再试", Toast.LENGTH_SHORT).show()
+ }
}
-// 设置其他提醒 暂时不需要
-// binding.settingsReminderOther.setOnClickListener {
-// // 跳转到设置提醒页面
-// findNavController().navigate(R.id.action_settings_to_reminderSettingsFragmentOther)
-// }
+ // 待办
+ binding.layoutTodo.setOnClickListener {
+ // TODO: 实现待办功能
+ Toast.makeText(context, "待办功能开发中", Toast.LENGTH_SHORT).show()
+ }
+ // 好友邀请
+ binding.layoutInvite.setOnClickListener {
+ // 跳转到邀请活动页面
+ val intent = Intent(requireActivity(), InvitationActivity::class.java)
+ startActivity(intent)
+ }
+ // AI助手
+ binding.layoutAi.setOnClickListener {
+ // TODO: 实现AI助手功能
+ Toast.makeText(context, "AI助手功能开发中", Toast.LENGTH_SHORT).show()
+ }
+
+ // 离线模式
+ binding.layoutOffline.setOnClickListener {
+ // TODO: 实现离线模式功能
+ Toast.makeText(context, "离线模式功能开发中", Toast.LENGTH_SHORT).show()
+ }
// 关于小红书
- binding.aboutApp.setOnClickListener {
- // 跳转到小红书账号页面
+ binding.layoutAbout.setOnClickListener {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(xiaohongshuUrl))
startActivity(intent)
}
// 邮件联系
- binding.emailContact.setOnClickListener {
+ binding.layoutEmail.setOnClickListener {
showEmailDialog()
}
// 意见与反馈
- binding.feedback.setOnClickListener {
+ binding.layoutFeedback.setOnClickListener {
showFeedbackDialog()
}
- // 分享给好友
- binding.shareToFriends.setOnClickListener {
- shareToWechat()
- }
-
// 隐私协议
- binding.privacyPolicy.setOnClickListener {
- startContentActivity("privacy_policy", "隐私协议")
+ binding.layoutPrivacy.setOnClickListener {
+ startContentActivity("隐私协议", "隐私协议")
}
- // 如何使用
- binding.howToUse.setOnClickListener {
- startContentActivity("user_guide", "使用说明")
+ // 使用教程
+ binding.layoutTutorial.setOnClickListener {
+ startContentActivity("使用教程", "使用教程")
}
+
+ // 头像点击老的处理逻辑
+ binding.layoutUserInfo.setOnClickListener {
+ currentUserInfo?.let { user ->
+ val intent = Intent(requireContext(), EditProfileActivity::class.java).apply {
+ putExtra("nickname", user.name) // 使用数据模型中的字段
+ putExtra("avatar_url", user.cover) // 使用正确的URL字段
+ }
+ editProfileLauncher.launch(intent)
+ } ?: run {
+ Toast.makeText(context, "用户信息未加载完成", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ // VIP续费
+ binding.btnRenew.setOnClickListener {
+// Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
+ // 跳转到vipActivity
+ val intent = Intent(requireContext(), VipActivity::class.java)
+ startActivity(intent)
+ }
+
+ binding.cardVip.setOnClickListener {
+// Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
+ // 跳转到vipActivity
+ val intent = Intent(requireContext(), VipActivity::class.java)
+ startActivity(intent)
+ }
+
+ // 设置按钮点击
+ binding.ivSetting.setOnClickListener {
+ // 跳转到
+ val intent = Intent(requireContext(), SettingActivity::class.java)
+ startActivity(intent)
+ }
+
+
}
private fun showEmailDialog() {
@@ -190,14 +303,69 @@
}
}
- private fun startContentActivity(type: String, title: String) {
+ private fun startContentActivity(id: String, title: String) {
val intent = Intent(requireContext(), ContentDetailActivity::class.java).apply {
- putExtra(ContentDetailActivity.EXTRA_CONTENT_TYPE, type)
+ putExtra(ContentDetailActivity.ID, id)
putExtra(ContentDetailActivity.EXTRA_TITLE, title)
}
startActivity(intent)
}
+ private suspend fun loadUserInfo() {
+ try {
+ // 从本地获取保存的手机号
+ val savedPhone = PreferencesManager.getPhone()
+ if (savedPhone.isNullOrEmpty()) {
+ Toast.makeText(context, "用户未登录", Toast.LENGTH_SHORT).show()
+ return
+ }
+
+ val response = RetrofitClient.apiService.getUserInfo(savedPhone)
+ if (response.code == "0" && response.data != null) {
+ // 保存用户信息
+ currentUserInfo = response.data
+ val userInfo = response.data
+
+ // 本地保存我的邀请码
+ PreferencesManager.setInviteCode(userInfo.intervialcode);
+ // 设置头像
+ Glide.with(this)
+ .load(userInfo.cover)
+ .placeholder(R.drawable.default_avatar)
+ .into(binding.ivAvatar)
+
+ // 设置昵称和账号
+ binding.tvNickname.text = userInfo.name
+ binding.tvUserId.text = "个人账号:${userInfo.contactTel}"
+
+ // 设置VIP信息
+ if (userInfo.isMember) {
+ binding.ivVip.visibility = View.VISIBLE
+ binding.cardVip.visibility = View.VISIBLE
+ binding.tvVipExpire.text = "${userInfo.memberOverDate} 到期"
+ } else {
+ //非会员信息
+ binding.ivVip.visibility = View.GONE
+ binding.cardVip.visibility = View.VISIBLE
+ binding.btnRenew.text = "立即开通"
+ binding.linearVipContainer.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.gray))
+ }
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ // 加载用户信息
+ lifecycleScope.launch {
+ loadUserInfo()
+ }
+ }
+
override fun onDestroyView() {
super.onDestroyView()
_binding = null
--
Gitblit v1.9.3