Commit e377abd8 authored by jianglx's avatar jianglx

修改权限代码

parent 9a38f571
......@@ -8,8 +8,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
flavorDimensions "default"
versionCode 150
versionName "1.5.0"
versionCode 154
versionName "1.5.4"
multiDexEnabled true
......
......@@ -78,6 +78,7 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
api 'com.github.bumptech.glide:okhttp3-integration:4.3.1'
api 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0'
api 'pub.devrel:easypermissions:1.3.0'
implementation 'com.alibaba:fastjson:1.2.21'
api project(':component_utils')
// implementation files('libs/tbs_sdk_thirdapp_v3.6.0.1310_43612_sharewithdownload_withoutGame_obfs_20180706_163319.jar')
......
......@@ -38,6 +38,7 @@ import java.util.Map;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 营地
......@@ -259,7 +260,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(getActivity()).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -268,8 +269,6 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean == true) {
initGps();
} else {
getActivity().finish();
}
}
});
......
......@@ -57,6 +57,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
import static com.ruiwenliu.wrapper.weight.webview.SafeWebView.hasKitkat;
......@@ -393,7 +394,7 @@ public class CampDetailActivity extends BaseStatusActivity<CampPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -403,7 +404,10 @@ public class CampDetailActivity extends BaseStatusActivity<CampPresenter> {
if (aBoolean == true) {
initGps();
} else {
finish();
new AppSettingsDialog.Builder(mActivity).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -54,6 +54,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 拍拍生成海报
......@@ -218,7 +219,7 @@ public class PatGeneratePosterActivity extends BaseStatusActivity<PickerPresente
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
......@@ -233,7 +234,11 @@ public class PatGeneratePosterActivity extends BaseStatusActivity<PickerPresente
mPresenter.openAlbum(false);
break;
}
}else{
new AppSettingsDialog.Builder(PatGeneratePosterActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -70,6 +70,7 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import pub.devrel.easypermissions.AppSettingsDialog;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
......@@ -531,7 +532,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
......@@ -546,7 +547,11 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
selectPhoto();
break;
}
} else {
new AppSettingsDialog.Builder(PostPatActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......@@ -578,7 +583,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(this).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -588,7 +593,10 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
if (aBoolean == true) {
initGps();
} else {
finish();
new AppSettingsDialog.Builder(PostPatActivity.this).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -40,6 +40,7 @@ import java.util.Map;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 问答 发布问题
......@@ -155,7 +156,7 @@ public class PublishingProblemActivity extends BaseStatusActivity<DiscoveryPrese
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(this).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -165,7 +166,10 @@ public class PublishingProblemActivity extends BaseStatusActivity<DiscoveryPrese
if (aBoolean == true) {
initGps();
} else {
finish();
new AppSettingsDialog.Builder(PublishingProblemActivity.this).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -62,6 +62,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 发短视频
......@@ -255,7 +256,7 @@ public class SendVideoActivity extends BaseStatusActivity<DiscoveryPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(this).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -265,7 +266,10 @@ public class SendVideoActivity extends BaseStatusActivity<DiscoveryPresenter> {
if (aBoolean == true) {
initGps();
} else {
finish();
new AppSettingsDialog.Builder(SendVideoActivity.this).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -40,6 +40,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
......@@ -245,7 +246,7 @@ public class DrivingUploadActivity extends BaseStatusActivity<PickerPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
......@@ -262,6 +263,11 @@ public class DrivingUploadActivity extends BaseStatusActivity<PickerPresenter> {
break;
}
}else {
new AppSettingsDialog.Builder(DrivingUploadActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -90,6 +90,7 @@ import butterknife.BindView;
import butterknife.OnClick;
import butterknife.Unbinder;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 首页
......@@ -1275,7 +1276,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(getActivity()).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -1286,7 +1287,10 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
initGps();
initCity();
} else {
getActivity().finish();
new AppSettingsDialog.Builder(getActivity()).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -50,6 +50,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* Created :Auser
......@@ -90,7 +91,7 @@ public class EvaluationActivity extends BaseStatusActivity<PickerPresenter> {
private String mark2;
private String mark3;
private String no;
private String no;
public static Intent getIntent(Context context, String no) {
return new Intent(context, EvaluationActivity.class)
......@@ -121,7 +122,7 @@ public class EvaluationActivity extends BaseStatusActivity<PickerPresenter> {
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
titleView.setTitle(getString(R.string.rv_to_appointment_evaluation));
// dataBean = (OrderListBean.DataBeanX.DataBean) intent.getSerializableExtra("dataBean");
no = intent.getStringExtra("no");
no = intent.getStringExtra("no");
intiEt();
listImg = new ArrayList<>();
......@@ -204,14 +205,14 @@ public class EvaluationActivity extends BaseStatusActivity<PickerPresenter> {
}
private void setOrderDetail(OrderDetailBean result) {
dataBean = result.getData();
dataBean = result.getData();
if (dataBean != null) {
tvName.setText(dataBean.getName());
String icon ="";
if (!TextUtils.isEmpty(dataBean.getCoverPic())){
String icon = "";
if (!TextUtils.isEmpty(dataBean.getCoverPic())) {
icon = dataBean.getCoverPic();
}else {
} else {
icon = dataBean.getIcon();
}
GlideManager.getInstance(mActivity).loadImage(icon, ivCar);
......@@ -373,7 +374,7 @@ public class EvaluationActivity extends BaseStatusActivity<PickerPresenter> {
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
......@@ -388,7 +389,11 @@ public class EvaluationActivity extends BaseStatusActivity<PickerPresenter> {
mPresenter.openAlbum(false);
break;
}
} else {
new AppSettingsDialog.Builder(EvaluationActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
This diff is collapsed.
......@@ -48,6 +48,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
......@@ -243,7 +244,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
......@@ -259,7 +260,10 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
break;
}
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder(IDCardCertificationActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -56,6 +56,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 个人资料
......@@ -325,7 +326,7 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
......@@ -341,6 +342,11 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen
break;
}
}else{
new AppSettingsDialog.Builder(PersonalInformationActivity.this).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -4,12 +4,16 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.frame.base.bus.LoginSuccessfulEvent;
import com.frame.base.bus.Observer;
import com.frame.base.bus.RxBus;
import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
......@@ -77,6 +81,15 @@ public class SettingActivity extends BaseStatusActivity<CommonPresenter> impleme
tvOutSign.setText("退出登录");
tvOutSign.setBackgroundResource(R.drawable.shape_rv_button_light_gray);
}
DownListenerManager.getInstance().addDownListener(this);
versionName = UpdateAppUtils.getAppVersionName(this);
if (DownListenerManager.getInstance().isDown()) {
tvVersion.setText("下载中_" + DownListenerManager.getInstance().getProgress() + "%");
} else {
tvVersion.setText("当前版本 V" + versionName);
}
}
private void initRxBus() {
......@@ -91,16 +104,6 @@ public class SettingActivity extends BaseStatusActivity<CommonPresenter> impleme
});
}
DownListenerManager.getInstance().addDownListener(this);
versionName = UpdateAppUtils.getAppVersionName(this);
if (DownListenerManager.getInstance().isDown()) {
tvVersion.setText("下载中_" + DownListenerManager.getInstance().getProgress() + "%");
} else {
tvVersion.setText("当前版本 V" + versionName);
}
}
@Override
protected void loadData(Bundle savedInstanceState, Intent intent) {
super.loadData(savedInstanceState, intent);
......
This diff is collapsed.
......@@ -67,6 +67,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 旅游
......@@ -565,7 +566,7 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(getActivity()).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -575,8 +576,6 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
if (aBoolean == true) {
initGps();
initCity();
} else {
getActivity().finish();
}
}
});
......
......@@ -51,6 +51,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/**
* 预约信息
......@@ -290,7 +291,7 @@ public class ReservationInformationActivity extends BaseStatusActivity<CarPurcha
/**
* 6.0以上手机做权限处理
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
......@@ -300,7 +301,10 @@ public class ReservationInformationActivity extends BaseStatusActivity<CarPurcha
if (aBoolean == true) {
initGps();
} else {
finish();
new AppSettingsDialog.Builder(ReservationInformationActivity.this).
setTitle("需要定位权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
});
......
......@@ -58,6 +58,8 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import pub.devrel.easypermissions.AppSettingsDialog;
public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements IChatView, ChatMessageListener, View.OnClickListener, RecordListener {
private ImageButton voiceImgBtn;
......@@ -341,7 +343,10 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder(ChatActivity.this).
setTitle("需要获取麦克风权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
});
} else {
......@@ -372,7 +377,10 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder(ChatActivity.this).
setTitle("需要录音权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
});
} else {
......@@ -388,7 +396,10 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder(ChatActivity.this).
setTitle("需要视频权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
});
} else {
......
......@@ -15,6 +15,7 @@ import android.util.Log;
import android.widget.Toast;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.rv.im.ChatActivity;
import com.rv.im.Constants;
import com.rv.im.ImSetting;
import com.rv.im.call.Jitsi_pre;
......@@ -37,6 +38,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import pub.devrel.easypermissions.AppSettingsDialog;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
......@@ -97,7 +99,10 @@ public class ChatPresenterImp implements IChatPresenter {
openAlbum();
}
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder((Activity) weakReference.get()).
setTitle("需要获取相机权限、存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
});
} else {
......@@ -334,7 +339,10 @@ public class ChatPresenterImp implements IChatPresenter {
if (aBoolean == true) {
showFileChoiceDialog();
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
new AppSettingsDialog.Builder((Activity) weakReference.get()).
setTitle("需要获取存储权限")
.setRationale("如果没有此权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
});
} else {
......
......@@ -56,7 +56,7 @@ public class LoginView extends LinearLayout {
if (info != null) {
if (info.getIsMember() == 0) {
llLogin.setBackgroundResource(R.drawable.bg_normal_user);
ivMemberLevel.setVisibility(GONE);
ivMemberLevel.setVisibility(INVISIBLE);
} else {
switch (info.getMemberLevel()) {
case 1:
......
......@@ -147,7 +147,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:gravity="center_vertical|right"
android:layout_marginLeft="@dimen/dp_10"
android:gravity="center_vertical|left"
android:orientation="horizontal">
<ImageView
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment