Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
android
/
dayu
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b4125274
authored
a year ago
by
wukun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
api30 调整文件路径
parent
65df3fcc
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
53 additions
and
51 deletions
baseSDK/src/main/java/com/dayu/common/Constants.java
orderCenter/src/main/java/com/dayu/order/presenter/multipleprocess/MultipleProcessPresenter.java
orderCenter/src/main/java/com/dayu/order/ui/activity/MultipleProcessActivity.java
orderCenter/src/main/java/com/dayu/order/ui/activity/SignatureActivity.java
orderCenter/src/main/res/layout/activity_multiple_process.xml
baseSDK/src/main/java/com/dayu/common/Constants.java
View file @
b4125274
...
@@ -45,21 +45,21 @@ public class Constants {
...
@@ -45,21 +45,21 @@ public class Constants {
/**
/**
* dev环境配置.
* dev环境配置.
*/
*/
//
public static String ENVIROMENT = "debug";
public
static
String
ENVIROMENT
=
"debug"
;
//
public static String PHOTO = "dev";
public
static
String
PHOTO
=
"dev"
;
//
public static int LOG_LEVEL = LogUtils.LEVEL_ALL;
public
static
int
LOG_LEVEL
=
LogUtils
.
LEVEL_ALL
;
//
public static String BASE_URL = "http://47.94.101.239:3112";
public
static
String
BASE_URL
=
"http://47.94.101.239:3112"
;
//
public static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
public
static
String
WEB_SOP
=
"http://47.94.101.239:9004/#/sop"
;
//
public static String CHECK_MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manyServiceResult";
public
static
String
CHECK_MULTI_WEB_SOP
=
"http://47.94.101.239:9004/#/manyServiceResult"
;
//
public static String MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manySop";
public
static
String
MULTI_WEB_SOP
=
"http://47.94.101.239:9004/#/manySop"
;
//
public static String WEB_SOP_DETAIL = "http://47.94.101.239:9004/#/sopdetail";
public
static
String
WEB_SOP_DETAIL
=
"http://47.94.101.239:9004/#/sopdetail"
;
//
public static String WEB_ZHI_SHI = "http://47.94.101.239:9004/#/detail";
public
static
String
WEB_ZHI_SHI
=
"http://47.94.101.239:9004/#/detail"
;
//
public static final String UP_PHOTO = "/file/uploadMore?targetPath=dev/sp/mobile/android/business/checkApply";
public
static
final
String
UP_PHOTO
=
"/file/uploadMore?targetPath=dev/sp/mobile/android/business/checkApply"
;
//
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=dev/video";
public
static
final
String
UP_VIDEO
=
"/file/uploadVideoOne?targetPath=dev/video"
;
//
public static boolean IS_DEBUG = true;
public
static
boolean
IS_DEBUG
=
true
;
//
public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
public
static
String
VIDEO_SHARE_URL
=
"http://uat.kf.ai:9099/#/shareVideo?type=_type&id="
;
//uat 学习视频分享链接 type(课程: course 直播: live)
//
public static int XLR_PID = 239; //小绿人商家id
public
static
int
XLR_PID
=
239
;
//小绿人商家id
//
public static String SCHEME_9099 = "http://dev.kf.ai:9099/#/";
public
static
String
SCHEME_9099
=
"http://dev.kf.ai:9099/#/"
;
/**
/**
...
@@ -85,21 +85,21 @@ public class Constants {
...
@@ -85,21 +85,21 @@ public class Constants {
/**
/**
* 正式环境.
* 正式环境.
*/
*/
public
static
String
ENVIROMENT
=
"release"
;
//
public static String ENVIROMENT = "release";
public
static
String
PHOTO
=
"online"
;
//
public static String PHOTO = "online";
public
static
int
LOG_LEVEL
=
LogUtils
.
LEVEL_OFF
;
//
public static int LOG_LEVEL = LogUtils.LEVEL_OFF;
public
static
String
BASE_URL
=
"https://mobile.dayuspm.com"
;
//
public static String BASE_URL = "https://mobile.dayuspm.com";
public
static
String
WEB_SOP
=
"https://sop.kf.ai/#/sop"
;
//
public static String WEB_SOP = "https://sop.kf.ai/#/sop";
public
static
String
WEB_SOP_DETAIL
=
"https://sop.kf.ai/#/sopdetail"
;
//
public static String WEB_SOP_DETAIL = "https://sop.kf.ai/#/sopdetail";
public
static
String
WEB_ZHI_SHI
=
"https://sop.kf.ai/#/detail"
;
//
public static String WEB_ZHI_SHI = "https://sop.kf.ai/#/detail";
public
static
String
CHECK_MULTI_WEB_SOP
=
"https://sop.kf.ai/#/manyServiceResult"
;
//
public static String CHECK_MULTI_WEB_SOP = "https://sop.kf.ai/#/manyServiceResult";
public
static
String
MULTI_WEB_SOP
=
"https://sop.kf.ai/#/manySop"
;
//
public static String MULTI_WEB_SOP = "https://sop.kf.ai/#/manySop";
public
static
final
String
UP_PHOTO
=
"/file/uploadMore?targetPath=online/sp/mobile/android/business/checkApply"
;
//
public static final String UP_PHOTO = "/file/uploadMore?targetPath=online/sp/mobile/android/business/checkApply";
public
static
final
String
UP_VIDEO
=
"/file/uploadVideoOne?targetPath=online/video"
;
//
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=online/video";
public
static
boolean
IS_DEBUG
=
false
;
//
public static boolean IS_DEBUG = false;
public
static
String
VIDEO_SHARE_URL
=
"http://app.dl.kf.ai/ext/#/shareVideo?type=_type&id="
;
//学习视频分享链接 type(课程: course 直播: live)
//
public static String VIDEO_SHARE_URL = "http://app.dl.kf.ai/ext/#/shareVideo?type=_type&id="; //学习视频分享链接 type(课程: course 直播: live)
public
static
int
XLR_PID
=
1936
;
//小绿人商家id
//
public static int XLR_PID = 1936; //小绿人商家id
public
static
String
SCHEME_9099
=
"http://app.dl.kf.ai/ext/#/"
;
//
public static String SCHEME_9099 = "http://app.dl.kf.ai/ext/#/";
/**
/**
...
...
This diff is collapsed.
Click to expand it.
orderCenter/src/main/java/com/dayu/order/presenter/multipleprocess/MultipleProcessPresenter.java
View file @
b4125274
package
com
.
dayu
.
order
.
presenter
.
multipleprocess
;
package
com
.
dayu
.
order
.
presenter
.
multipleprocess
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
...
@@ -15,8 +14,6 @@ import com.dayu.order.api.protocol.OrderDetail;
...
@@ -15,8 +14,6 @@ import com.dayu.order.api.protocol.OrderDetail;
import
com.dayu.order.api.protocol.Spu
;
import
com.dayu.order.api.protocol.Spu
;
import
com.dayu.order.common.OrderConstant
;
import
com.dayu.order.common.OrderConstant
;
import
com.dayu.order.common.SubmitCheckEvent
;
import
com.dayu.order.common.SubmitCheckEvent
;
import
com.dayu.order.ui.activity.QrCodeActivity
;
import
com.dayu.order.ui.activity.SignatureActivity
;
import
com.dayu.provider.event.RefreshServe
;
import
com.dayu.provider.event.RefreshServe
;
import
com.dayu.provider.router.RouterPath
;
import
com.dayu.provider.router.RouterPath
;
import
com.dayu.utils.ToastUtils
;
import
com.dayu.utils.ToastUtils
;
...
@@ -40,6 +37,7 @@ import okhttp3.RequestBody;
...
@@ -40,6 +37,7 @@ import okhttp3.RequestBody;
* on 2017/11/8.
* on 2017/11/8.
*/
*/
public
class
MultipleProcessPresenter
extends
MultipleProcessContract
.
Presenter
{
public
class
MultipleProcessPresenter
extends
MultipleProcessContract
.
Presenter
{
public
ObservableField
<
Object
>
mDatas
=
new
ObservableField
<>();
public
ObservableField
<
Object
>
mDatas
=
new
ObservableField
<>();
public
ObservableField
<
Object
>
mFootDatas
=
new
ObservableField
<>();
public
ObservableField
<
Object
>
mFootDatas
=
new
ObservableField
<>();
private
ArrayList
<
Spu
>
mSpus
;
private
ArrayList
<
Spu
>
mSpus
;
...
@@ -83,12 +81,13 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
...
@@ -83,12 +81,13 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
return
mFootDatas
;
return
mFootDatas
;
}
}
public
void
process
()
{
public
void
process
(
String
path
)
{
if
(
mView
.
getPayType
()
==
1
&&
!
mCanProcess
)
{
if
(
mView
.
getPayType
()
==
1
&&
!
mCanProcess
)
{
ToastUtils
.
showShortToast
(
"请先扫码收款后再提交验收!"
);
ToastUtils
.
showShortToast
(
"请先扫码收款后再提交验收!"
);
return
;
return
;
}
}
File
file
=
new
File
(
SignatureActivity
.
path
);
File
file
=
new
File
(
path
);
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
&&
!
file
.
exists
())
{
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
&&
!
file
.
exists
())
{
ToastUtils
.
showShortToast
(
R
.
string
.
signature_name
);
ToastUtils
.
showShortToast
(
R
.
string
.
signature_name
);
return
;
return
;
...
@@ -108,12 +107,13 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
...
@@ -108,12 +107,13 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
// }
// }
// });
// });
// } else {
// } else {
commitePhoto
();
commitePhoto
(
path
);
// }
// }
}
}
}
}
private
void
commitePhoto
()
{
private
void
commitePhoto
(
String
path
)
{
MultipartBody
.
Part
[]
parts
;
MultipartBody
.
Part
[]
parts
;
ArrayList
<
String
>
imageUrl
=
mView
.
getImages
();
ArrayList
<
String
>
imageUrl
=
mView
.
getImages
();
if
(
imageUrl
!=
null
&&
imageUrl
.
size
()
>
0
)
{
if
(
imageUrl
!=
null
&&
imageUrl
.
size
()
>
0
)
{
...
@@ -122,7 +122,7 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
...
@@ -122,7 +122,7 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
BaseApiFactory
.
uploadPhoto
(
parts
).
subscribe
(
baseObserver
(
list
->
{
BaseApiFactory
.
uploadPhoto
(
parts
).
subscribe
(
baseObserver
(
list
->
{
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
)
{
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
)
{
mView
.
showDialog
();
mView
.
showDialog
();
File
file
=
new
File
(
SignatureActivity
.
path
);
File
file
=
new
File
(
path
);
RequestBody
requestFile
=
RequestBody
.
create
(
MediaType
.
parse
(
"multipart/form-data"
),
file
);
RequestBody
requestFile
=
RequestBody
.
create
(
MediaType
.
parse
(
"multipart/form-data"
),
file
);
MultipartBody
.
Part
part
=
MultipartBody
.
Part
.
createFormData
(
"fileUpload"
,
file
.
getName
(),
requestFile
);
MultipartBody
.
Part
part
=
MultipartBody
.
Part
.
createFormData
(
"fileUpload"
,
file
.
getName
(),
requestFile
);
BaseApiFactory
.
uploadPhoto
(
part
).
subscribe
(
baseObserver
(
BaseApiFactory
.
uploadPhoto
(
part
).
subscribe
(
baseObserver
(
...
@@ -138,7 +138,7 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
...
@@ -138,7 +138,7 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
}
else
{
}
else
{
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
)
{
if
(
mNeedEsignature
!=
null
&&
mNeedEsignature
==
1
)
{
mView
.
showDialog
();
mView
.
showDialog
();
File
file
=
new
File
(
SignatureActivity
.
path
);
File
file
=
new
File
(
path
);
RequestBody
requestFile
=
RequestBody
.
create
(
MediaType
.
parse
(
"multipart/form-data"
),
file
);
RequestBody
requestFile
=
RequestBody
.
create
(
MediaType
.
parse
(
"multipart/form-data"
),
file
);
MultipartBody
.
Part
part
=
MultipartBody
.
Part
.
createFormData
(
"fileUpload"
,
file
.
getName
(),
requestFile
);
MultipartBody
.
Part
part
=
MultipartBody
.
Part
.
createFormData
(
"fileUpload"
,
file
.
getName
(),
requestFile
);
BaseApiFactory
.
uploadPhoto
(
part
).
subscribe
(
baseObserver
(
BaseApiFactory
.
uploadPhoto
(
part
).
subscribe
(
baseObserver
(
...
...
This diff is collapsed.
Click to expand it.
orderCenter/src/main/java/com/dayu/order/ui/activity/MultipleProcessActivity.java
View file @
b4125274
...
@@ -4,6 +4,7 @@ import android.content.Intent;
...
@@ -4,6 +4,7 @@ import android.content.Intent;
import
android.content.res.Configuration
;
import
android.content.res.Configuration
;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.graphics.BitmapFactory
;
import
android.os.Environment
;
import
android.text.Editable
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
...
@@ -52,6 +53,7 @@ import java.util.List;
...
@@ -52,6 +53,7 @@ import java.util.List;
public
class
MultipleProcessActivity
extends
BaseActivity
<
MultipleProcessPresenter
,
ActivityMultipleProcessBinding
>
public
class
MultipleProcessActivity
extends
BaseActivity
<
MultipleProcessPresenter
,
ActivityMultipleProcessBinding
>
implements
MultipleProcessContract
.
View
{
implements
MultipleProcessContract
.
View
{
private
String
path
=
""
;
private
EditText
mDoorPrice
;
private
EditText
mDoorPrice
;
private
EditText
mServerPrice
;
private
EditText
mServerPrice
;
private
EditText
mMaterialsPrice
;
private
EditText
mMaterialsPrice
;
...
@@ -98,11 +100,17 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
...
@@ -98,11 +100,17 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
@Override
@Override
public
void
initView
()
{
public
void
initView
()
{
path
=
mActivity
.
getExternalFilesDir
(
Environment
.
DIRECTORY_DOWNLOADS
)
+
"/dayu/image/signature.png"
;
mBind
.
tvTitle
.
setText
(
getString
(
R
.
string
.
submit_order
));
mBind
.
tvTitle
.
setText
(
getString
(
R
.
string
.
submit_order
));
mBind
.
recyclerView
.
mCoreAdapter
.
addFooterViewType
(
R
.
layout
.
item_multi_process_foot
,
null
);
mBind
.
recyclerView
.
mCoreAdapter
.
addFooterViewType
(
R
.
layout
.
item_multi_process_foot
,
null
);
View
view
=
LayoutInflater
.
from
(
mActivity
).
inflate
(
R
.
layout
.
item_multi_process_foot
,
null
);
View
view
=
LayoutInflater
.
from
(
mActivity
).
inflate
(
R
.
layout
.
item_multi_process_foot
,
null
);
mBind
.
recyclerView
.
mCoreAdapter
.
addFootViwe
(
view
,
R
.
layout
.
item_multi_process_foot
);
mBind
.
recyclerView
.
mCoreAdapter
.
addFootViwe
(
view
,
R
.
layout
.
item_multi_process_foot
);
initFootView
(
view
);
initFootView
(
view
);
mBind
.
tvCommit
.
setOnClickListener
(
v
->
{
String
path
=
getExternalFilesDir
(
Environment
.
DIRECTORY_DOWNLOADS
)
+
"/dayu/image/signature.png"
;
mPresenter
.
process
(
path
);
});
}
}
public
void
initFootView
(
View
view
)
{
public
void
initFootView
(
View
view
)
{
...
@@ -585,7 +593,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
...
@@ -585,7 +593,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
mSignature
.
setClickable
(
false
);
mSignature
.
setClickable
(
false
);
BitmapFactory
.
Options
options
=
new
BitmapFactory
.
Options
();
BitmapFactory
.
Options
options
=
new
BitmapFactory
.
Options
();
options
.
inSampleSize
=
2
;
options
.
inSampleSize
=
2
;
Bitmap
bm
=
BitmapFactory
.
decodeFile
(
SignatureActivity
.
path
,
options
);
Bitmap
bm
=
BitmapFactory
.
decodeFile
(
path
,
options
);
mIvSignature
.
setImageBitmap
(
bm
);
mIvSignature
.
setImageBitmap
(
bm
);
}
}
}
}
...
@@ -593,7 +601,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
...
@@ -593,7 +601,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
@Override
@Override
protected
void
onDestroy
()
{
protected
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
File
file
=
new
File
(
SignatureActivity
.
path
);
File
file
=
new
File
(
path
);
if
(
file
.
exists
())
{
if
(
file
.
exists
())
{
file
.
delete
();
file
.
delete
();
}
}
...
...
This diff is collapsed.
Click to expand it.
orderCenter/src/main/java/com/dayu/order/ui/activity/SignatureActivity.java
View file @
b4125274
...
@@ -2,13 +2,10 @@ package com.dayu.order.ui.activity;
...
@@ -2,13 +2,10 @@ package com.dayu.order.ui.activity;
import
android.Manifest
;
import
android.Manifest
;
import
android.annotation.SuppressLint
;
import
android.annotation.SuppressLint
;
import
android.content.Intent
;
import
android.os.Environment
;
import
android.os.Environment
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
com.dayu.base.ui.activity.CameraActivity
;
import
com.dayu.base.ui.activity.DataBindingActivity
;
import
com.dayu.base.ui.activity.DataBindingActivity
;
import
com.dayu.common.Constants
;
import
com.dayu.order.R
;
import
com.dayu.order.R
;
import
com.dayu.order.common.OrderConstant
;
import
com.dayu.order.common.OrderConstant
;
import
com.dayu.order.databinding.ActivitySignatureLayoutBinding
;
import
com.dayu.order.databinding.ActivitySignatureLayoutBinding
;
...
@@ -17,10 +14,6 @@ import com.dayu.utils.ToastUtils;
...
@@ -17,10 +14,6 @@ import com.dayu.utils.ToastUtils;
import
java.io.File
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.concurrent.TimeUnit
;
import
io.reactivex.Observable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
/**
/**
* Created by luofan
* Created by luofan
...
@@ -28,7 +21,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
...
@@ -28,7 +21,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
*/
*/
public
class
SignatureActivity
extends
DataBindingActivity
<
ActivitySignatureLayoutBinding
>
{
public
class
SignatureActivity
extends
DataBindingActivity
<
ActivitySignatureLayoutBinding
>
{
p
ublic
static
String
path
=
Environment
.
getExternalStorageDirectory
()
+
"/dayu/image/signature.png
"
;
p
rivate
String
path
=
"
"
;
@Override
@Override
public
int
getLayoutId
()
{
public
int
getLayoutId
()
{
...
@@ -37,6 +30,7 @@ public class SignatureActivity extends DataBindingActivity<ActivitySignatureLayo
...
@@ -37,6 +30,7 @@ public class SignatureActivity extends DataBindingActivity<ActivitySignatureLayo
@Override
@Override
public
void
initView
()
{
public
void
initView
()
{
path
=
mActivity
.
getExternalFilesDir
(
Environment
.
DIRECTORY_DOWNLOADS
)
+
"/dayu/image/signature.png"
;
String
mpath
=
getIntent
().
getStringExtra
(
OrderConstant
.
PATH
);
String
mpath
=
getIntent
().
getStringExtra
(
OrderConstant
.
PATH
);
mBind
.
titleRight
.
setOnClickListener
(
v
->
mBind
.
view
.
clear
());
mBind
.
titleRight
.
setOnClickListener
(
v
->
mBind
.
view
.
clear
());
mBind
.
titleBack
.
setOnClickListener
(
v
->
finish
());
mBind
.
titleBack
.
setOnClickListener
(
v
->
finish
());
...
@@ -47,7 +41,7 @@ public class SignatureActivity extends DataBindingActivity<ActivitySignatureLayo
...
@@ -47,7 +41,7 @@ public class SignatureActivity extends DataBindingActivity<ActivitySignatureLayo
@SuppressLint
(
"CheckResult"
)
@SuppressLint
(
"CheckResult"
)
@Override
@Override
public
void
onPermissionGranted
()
{
public
void
onPermissionGranted
()
{
File
file
=
new
File
(
Environment
.
getExternalStorageDirectory
(
)
+
"/dayu/image/"
);
File
file
=
new
File
(
mActivity
.
getExternalFilesDir
(
Environment
.
DIRECTORY_DOWNLOADS
)
+
"/dayu/image/"
);
try
{
try
{
if
(!
file
.
exists
())
{
if
(!
file
.
exists
())
{
file
.
mkdirs
();
file
.
mkdirs
();
...
...
This diff is collapsed.
Click to expand it.
orderCenter/src/main/res/layout/activity_multiple_process.xml
View file @
b4125274
...
@@ -59,12 +59,12 @@
...
@@ -59,12 +59,12 @@
app:needFoot=
"false"
/>
app:needFoot=
"false"
/>
<TextView
<TextView
android:id=
"@+id/tv_commit"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"49dp"
android:layout_height=
"49dp"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
android:background=
"@color/bg_button"
android:background=
"@color/bg_button"
android:gravity=
"center"
android:gravity=
"center"
android:onClick=
"@{()->presenter.process()}"
android:text=
"@string/submit_order"
android:text=
"@string/submit_order"
android:textColor=
"@color/white"
/>
android:textColor=
"@color/white"
/>
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment