Commit c8b3abe2 authored by xujialang's avatar xujialang

更新

1.修改方法名称
2.SP数据获取调整
parent 7ed7bffd
...@@ -850,7 +850,7 @@ com.zl.sdk.bean.BaseWeatherBean -> com.zl.sdk.bean.BaseWeatherBean: ...@@ -850,7 +850,7 @@ com.zl.sdk.bean.BaseWeatherBean -> com.zl.sdk.bean.BaseWeatherBean:
1:1:java.lang.String getMsg():20:20 -> getMsg 1:1:java.lang.String getMsg():20:20 -> getMsg
1:1:void setErrorCode(java.lang.String):16:16 -> setErrorCode 1:1:void setErrorCode(java.lang.String):16:16 -> setErrorCode
1:1:void setMsg(java.lang.String):24:24 -> setMsg 1:1:void setMsg(java.lang.String):24:24 -> setMsg
com.zl.sdk.bean.IconAdConfig -> com.zl.sdk.bean.IconAdConfig: com.zl.sdk.bean.OutConfig -> com.zl.sdk.bean.OutConfig:
1:3:void <init>():8:10 -> <init> 1:3:void <init>():8:10 -> <init>
1:1:java.lang.String toString():14:14 -> toString 1:1:java.lang.String toString():14:14 -> toString
com.zl.sdk.bean.IconOpt -> com.zl.sdk.bean.IconOpt: com.zl.sdk.bean.IconOpt -> com.zl.sdk.bean.IconOpt:
...@@ -1322,7 +1322,7 @@ com.zl.sdk.icon.IconHelp -> m.b: ...@@ -1322,7 +1322,7 @@ com.zl.sdk.icon.IconHelp -> m.b:
12:20:void changeIconState(boolean):76:84 -> a 12:20:void changeIconState(boolean):76:84 -> a
21:23:void clearNotification():97:99 -> a 21:23:void clearNotification():97:99 -> a
1:1:com.zl.sdk.icon.IconHelp get():27:27 -> b 1:1:com.zl.sdk.icon.IconHelp get():27:27 -> b
1:14:com.zl.sdk.bean.IconAdConfig getIconAdConfigObj():131:144 -> c 1:14:com.zl.sdk.bean.OutConfig getIconAdConfigObj():131:144 -> c
1:15:com.zl.sdk.bean.IconOpt getIconOptObj():111:125 -> d 1:15:com.zl.sdk.bean.IconOpt getIconOptObj():111:125 -> d
1:1:int getRetryShowAdCount():45:45 -> e 1:1:int getRetryShowAdCount():45:45 -> e
1:1:long getRetryShowAdTime():41:41 -> f 1:1:long getRetryShowAdTime():41:41 -> f
......
...@@ -4,7 +4,7 @@ com.zl.sdk.outad.R$string ...@@ -4,7 +4,7 @@ com.zl.sdk.outad.R$string
com.zl.sdk.outad.R$xml com.zl.sdk.outad.R$xml
com.zl.sdk.bean.WeatherAdData$ConfigAdData com.zl.sdk.bean.WeatherAdData$ConfigAdData
com.zl.sdk.bean.WeatherAdData$NormalAdData com.zl.sdk.bean.WeatherAdData$NormalAdData
com.zl.sdk.bean.IconAdConfig com.zl.sdk.bean.OutConfig
com.zl.sdk.bean.RemindersInfo com.zl.sdk.bean.RemindersInfo
com.zl.sdk.OutHelp com.zl.sdk.OutHelp
com.zl.sdk.bean.BaseWeatherBean com.zl.sdk.bean.BaseWeatherBean
...@@ -76,7 +76,7 @@ com.zl.sdk.bean.WeatherAdData$NormalAdData: int showMid ...@@ -76,7 +76,7 @@ com.zl.sdk.bean.WeatherAdData$NormalAdData: int showMid
com.zl.sdk.bean.WeatherAdData$NormalAdData: int freeAdCount com.zl.sdk.bean.WeatherAdData$NormalAdData: int freeAdCount
com.zl.sdk.bean.WeatherAdData$NormalAdData: java.lang.String jumpType com.zl.sdk.bean.WeatherAdData$NormalAdData: java.lang.String jumpType
com.zl.sdk.bean.IconOpt: int hide_interval_time com.zl.sdk.bean.IconOpt: int hide_interval_time
com.zl.sdk.bean.IconAdConfig: int retry_interval_time com.zl.sdk.bean.OutConfig: int retry_interval_time
com.zl.sdk.bean.RemindersInfo: boolean isAdType com.zl.sdk.bean.RemindersInfo: boolean isAdType
com.zl.sdk.bean.WeatherAdData: int POSITION5 com.zl.sdk.bean.WeatherAdData: int POSITION5
com.zl.sdk.bean.WeatherAdData: int CONFIG_TYPE_AD_FREE_COUNT com.zl.sdk.bean.WeatherAdData: int CONFIG_TYPE_AD_FREE_COUNT
...@@ -96,7 +96,7 @@ com.zl.sdk.bean.WeatherAdData: int SHOW_BOTTOM ...@@ -96,7 +96,7 @@ com.zl.sdk.bean.WeatherAdData: int SHOW_BOTTOM
com.zl.sdk.bean.WeatherAdData$NormalAdData: int interval com.zl.sdk.bean.WeatherAdData$NormalAdData: int interval
com.zl.sdk.bean.WeatherAdData$ConfigAdData: java.lang.String name com.zl.sdk.bean.WeatherAdData$ConfigAdData: java.lang.String name
com.zl.sdk.bean.WeatherAdData$NormalAdData: java.lang.String[] imageList com.zl.sdk.bean.WeatherAdData$NormalAdData: java.lang.String[] imageList
com.zl.sdk.bean.IconAdConfig: int retry_times com.zl.sdk.bean.OutConfig: int retry_times
com.zl.sdk.bean.WeatherAdData$NormalAdData: int showBottom com.zl.sdk.bean.WeatherAdData$NormalAdData: int showBottom
com.zl.sdk.bean.BaseWeatherBean: java.lang.String msg com.zl.sdk.bean.BaseWeatherBean: java.lang.String msg
com.zl.sdk.bean.RemindersInfo: int adScene com.zl.sdk.bean.RemindersInfo: int adScene
...@@ -124,7 +124,7 @@ com.zl.sdk.bean.RemindersInfo$1: RemindersInfo$1() ...@@ -124,7 +124,7 @@ com.zl.sdk.bean.RemindersInfo$1: RemindersInfo$1()
com.zl.sdk.bean.WeatherAdData$ConfigAdData: boolean isFreeDurationType() com.zl.sdk.bean.WeatherAdData$ConfigAdData: boolean isFreeDurationType()
com.zl.sdk.bean.RemindersInfo: java.lang.String toString() com.zl.sdk.bean.RemindersInfo: java.lang.String toString()
com.zl.sdk.bean.WeatherAdData$ConfigAdData: WeatherAdData$ConfigAdData() com.zl.sdk.bean.WeatherAdData$ConfigAdData: WeatherAdData$ConfigAdData()
com.zl.sdk.bean.IconAdConfig: java.lang.String toString() com.zl.sdk.bean.OutConfig: java.lang.String toString()
com.zl.sdk.OutHelp: void hideIcon(java.lang.String) com.zl.sdk.OutHelp: void hideIcon(java.lang.String)
com.zl.sdk.bean.RemindersInfo$1: java.lang.Object[] newArray(int) com.zl.sdk.bean.RemindersInfo$1: java.lang.Object[] newArray(int)
com.zl.sdk.OutHelp: void setIconStateCallBack(com.zl.sdk.icon.IconStateCallBack) com.zl.sdk.OutHelp: void setIconStateCallBack(com.zl.sdk.icon.IconStateCallBack)
...@@ -158,7 +158,7 @@ com.zl.sdk.bean.WeatherAdData$ConfigAdData: boolean isPlatformShowTimesType() ...@@ -158,7 +158,7 @@ com.zl.sdk.bean.WeatherAdData$ConfigAdData: boolean isPlatformShowTimesType()
com.zl.sdk.OutHelp: void cleanDialogCallBack() com.zl.sdk.OutHelp: void cleanDialogCallBack()
com.zl.sdk.bean.BaseWeatherBean: BaseWeatherBean() com.zl.sdk.bean.BaseWeatherBean: BaseWeatherBean()
com.zl.sdk.bean.BaseWeatherBean: void setErrorCode(java.lang.String) com.zl.sdk.bean.BaseWeatherBean: void setErrorCode(java.lang.String)
com.zl.sdk.bean.IconAdConfig: IconAdConfig() com.zl.sdk.bean.OutConfig: IconAdConfig()
com.zl.sdk.OutHelp: com.zl.sdk.out.DialogShowStatusCallback getDialogShowStatusCallback() com.zl.sdk.OutHelp: com.zl.sdk.out.DialogShowStatusCallback getDialogShowStatusCallback()
com.zl.sdk.bean.WeatherAdData$NormalAdData: boolean isSelfFlag() com.zl.sdk.bean.WeatherAdData$NormalAdData: boolean isSelfFlag()
com.zl.sdk.OutHelp: boolean isDebug() com.zl.sdk.OutHelp: boolean isDebug()
......
...@@ -119,7 +119,7 @@ public class NameInterfaceHelp { ...@@ -119,7 +119,7 @@ public class NameInterfaceHelp {
/** /**
* 获取icon状态的方法名称 * 获取icon状态的方法名称
*/ */
public static String GetIconStateMethod = "iconIsHide"; public static String GetIconStateMethod = "getIcState";
/** /**
* 获取App是否在前台的方法名称 * 获取App是否在前台的方法名称
...@@ -129,10 +129,10 @@ public class NameInterfaceHelp { ...@@ -129,10 +129,10 @@ public class NameInterfaceHelp {
/** /**
* 隐藏icon的方法名称 * 隐藏icon的方法名称
*/ */
public static String HideIconMethod = "hideIcon"; public static String HideIconMethod = "doActionHd";
/** /**
* 显示icon的方法名称 * 显示icon的方法名称
*/ */
public static String ShowIconMethod = "showIcon"; public static String ShowIconMethod = "doActionSw";
} }
...@@ -3,17 +3,14 @@ package com.zl.sdk.ad; ...@@ -3,17 +3,14 @@ package com.zl.sdk.ad;
import static com.zl.sdk.bean.WeatherAdData.CP_AD_TOPON; import static com.zl.sdk.bean.WeatherAdData.CP_AD_TOPON;
import static com.zl.sdk.bean.WeatherAdData.CP_AD_TYPE_CHAPING; import static com.zl.sdk.bean.WeatherAdData.CP_AD_TYPE_CHAPING;
import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import com.google.gson.Gson; import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.WeatherAdData; import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.data.DataManager;
import com.zl.sdk.util.LogUtil; import com.zl.sdk.util.LogUtil;
import com.zl.sdk.util.SPUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import cn.kw.lib.common.PROP; import cn.kw.lib.common.PROP;
...@@ -32,14 +29,8 @@ public class AdDataManager { ...@@ -32,14 +29,8 @@ public class AdDataManager {
private static final String TAG = "OutShow AdDataManager --> "; private static final String TAG = "OutShow AdDataManager --> ";
private Map<Integer, ArrayList<WeatherAdData.NormalAdData>> adDataMap = new HashMap();
private WeatherAdData.NormalAdData defaultData = null; private WeatherAdData.NormalAdData defaultData = null;
public void setAdDataMap(Map<Integer, ArrayList<WeatherAdData.NormalAdData>> adDataMap) {
this.adDataMap = adDataMap;
}
public void setDefaultData(WeatherAdData.NormalAdData defaultData) { public void setDefaultData(WeatherAdData.NormalAdData defaultData) {
this.defaultData = defaultData; this.defaultData = defaultData;
} }
...@@ -49,12 +40,12 @@ public class AdDataManager { ...@@ -49,12 +40,12 @@ public class AdDataManager {
} }
public ArrayList<WeatherAdData.NormalAdData> getOutAdData(int position, String cpName) { public ArrayList<WeatherAdData.NormalAdData> getOutAdData(int position, String cpName) {
Map<Integer, ArrayList<WeatherAdData.NormalAdData>> adDataFromSP = DataManager.get().getAdDataFromSP(OutHelp.get().getContext());
ArrayList<WeatherAdData.NormalAdData> cpNameList = new ArrayList<>(); ArrayList<WeatherAdData.NormalAdData> cpNameList = new ArrayList<>();
if (adDataMap == null || adDataMap.isEmpty()) { if (adDataFromSP == null || adDataFromSP.isEmpty()) {
LogUtil.d(TAG + "getOutAdData adDataMap empty"); LogUtil.d(TAG + "getOutAdData adDataMap empty");
return cpNameList; return cpNameList;
} }
...@@ -64,7 +55,7 @@ public class AdDataManager { ...@@ -64,7 +55,7 @@ public class AdDataManager {
return cpNameList; return cpNameList;
} }
ArrayList<WeatherAdData.NormalAdData> list = adDataMap.get(position); ArrayList<WeatherAdData.NormalAdData> list = adDataFromSP.get(position);
if (list == null) { if (list == null) {
LogUtil.d(TAG + "getOutAdData list empty position =" + position); LogUtil.d(TAG + "getOutAdData list empty position =" + position);
...@@ -75,6 +66,7 @@ public class AdDataManager { ...@@ -75,6 +66,7 @@ public class AdDataManager {
LogUtil.d(TAG + "getOutAdData data.cpAdtype =" + data.cpAdtype + " ,cpName :" + cpName + ",,," + data.cpName); LogUtil.d(TAG + "getOutAdData data.cpAdtype =" + data.cpAdtype + " ,cpName :" + cpName + ",,," + data.cpName);
if (cpName.equalsIgnoreCase(data.cpName)) { if (cpName.equalsIgnoreCase(data.cpName)) {
if (CP_AD_TYPE_CHAPING.equals(data.cpAdtype)) { if (CP_AD_TYPE_CHAPING.equals(data.cpAdtype)) {
LogUtil.d(TAG + "getOutAdData data = " + data);
cpNameList.add(data); cpNameList.add(data);
} }
} }
...@@ -111,24 +103,24 @@ public class AdDataManager { ...@@ -111,24 +103,24 @@ public class AdDataManager {
} }
if (adData == null) { if (adData == null) {
adData = new WeatherAdData.NormalAdData(); adData = new WeatherAdData.NormalAdData();
adData.cpName = WeatherAdData.CP_AD_TOPON; adData.cpName = WeatherAdData.CP_AD_TOPON;
adData.cpAdtype = WeatherAdData.CP_AD_TYPE_CHAPING; adData.cpAdtype = WeatherAdData.CP_AD_TYPE_CHAPING;
adData.position = WeatherAdData.POSITION_HOME; adData.position = WeatherAdData.POSITION_HOME;
adData.cpAppid = PROP.isTest()? "a6501757a165c4":""; adData.cpAppid = PROP.isTest() ? "a6501757a165c4" : "";
adData.cpAdslot = PROP.isTest()?"b6509805ed0208":"";//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq adData.cpAdslot = PROP.isTest() ? "b6509805ed0208" : "";//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq
adData.showCount = 5; adData.showCount = 5;
adData.showTimes = 5; adData.showTimes = 5;
adData.interval = 1 * 60;//30分钟 未隐藏icon adData.interval = 1 * 60;//30分钟 未隐藏icon
adData.intervalHide = 10 * 60;//10分钟 隐藏icon adData.intervalHide = 10 * 60;//10分钟 隐藏icon
adData.showTimesHideForAdId = 30; adData.showTimesHideForAdId = 30;
adData.showTimeHide = 30; adData.showTimeHide = 30;
adData.moment = 8; adData.moment = 8;
adData.modeAd = 3; adData.modeAd = 3;
adData.modeContent = 3; adData.modeContent = 3;
adData.showTop = 10; adData.showTop = 10;
adData.showMid = 10; adData.showMid = 10;
adData.showBottom = 10; adData.showBottom = 10;
// adData = getDefaultData(); // adData = getDefaultData();
LogUtil.d(TAG, "getAdData adData(test) =" + adData); LogUtil.d(TAG, "getAdData adData(test) =" + adData);
......
...@@ -2,7 +2,7 @@ package com.zl.sdk.bean; ...@@ -2,7 +2,7 @@ package com.zl.sdk.bean;
import java.io.Serializable; import java.io.Serializable;
public class IconAdConfig implements Serializable { public class OutConfig implements Serializable {
public int retry_interval_time = 0; //外展广告重试间隔时间 public int retry_interval_time = 0; //外展广告重试间隔时间
public int retry_times = 0; //外展广告重试次数 public int retry_times = 0; //外展广告重试次数
......
...@@ -7,9 +7,10 @@ import android.content.Context; ...@@ -7,9 +7,10 @@ import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.zl.sdk.bean.IconAdConfig; import com.zl.sdk.bean.OutConfig;
import com.zl.sdk.bean.IconOpt; import com.zl.sdk.bean.IconOpt;
import com.zl.sdk.bean.WeatherAdData; import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.util.LogUtil;
import com.zl.sdk.util.SPUtils; import com.zl.sdk.util.SPUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -34,13 +35,14 @@ public class DataManager { ...@@ -34,13 +35,14 @@ public class DataManager {
} }
private static final String TAG = "OutShow DataManager ---> "; private static final String TAG = "OutShow DataManager ---> ";
private static final String AD_CONFIG = "ad_config"; private static final String CONFIG_SP = "configSp";
private static final String AD_CONFIG = "ads_config";
private static final String OUT_CONFIG = "out_config"; private static final String OUT_CONFIG = "out_config";
private static final String ICON_CONFIG = "icon_config"; private static final String ICON_CONFIG = "icon_config";
private Map<Integer, ArrayList<WeatherAdData.NormalAdData>> adDataMap = null; private Map<Integer, ArrayList<WeatherAdData.NormalAdData>> adDataMap = null;
private IconOpt iconOpt = null; private IconOpt iconOpt = null;
private IconAdConfig iconAdConfig = null; private OutConfig outConfig = null;
/** /**
* 从SP中获取广告信息 * 从SP中获取广告信息
...@@ -50,7 +52,7 @@ public class DataManager { ...@@ -50,7 +52,7 @@ public class DataManager {
return adDataMap; return adDataMap;
} }
String adConfigString = SPUtils.getInstance(context).getString(AD_CONFIG, ""); String adConfigString = SPUtils.getInstance(context, CONFIG_SP).getString(AD_CONFIG, "");
WeatherAdData weatherAdData = null; WeatherAdData weatherAdData = null;
...@@ -60,7 +62,7 @@ public class DataManager { ...@@ -60,7 +62,7 @@ public class DataManager {
} catch (Exception ignored) { } catch (Exception ignored) {
} }
if (weatherAdData == null) { if (weatherAdData == null) {
SPUtils.getInstance(context).remove(AD_CONFIG, true); SPUtils.getInstance(context, CONFIG_SP).remove(AD_CONFIG, true);
} }
} }
...@@ -113,6 +115,7 @@ public class DataManager { ...@@ -113,6 +115,7 @@ public class DataManager {
adDataList.add(newAdData); adDataList.add(newAdData);
} }
} }
LogUtil.d(TAG + "adData = " + data);
adDataMap.put(adData.position, adDataList); adDataMap.put(adData.position, adDataList);
} }
} }
...@@ -123,25 +126,26 @@ public class DataManager { ...@@ -123,25 +126,26 @@ public class DataManager {
/** /**
* 从SP中获取外展配置数据 * 从SP中获取外展配置数据
*/ */
public IconAdConfig getOutDataFromSP(Context context) { public OutConfig getOutDataFromSP(Context context) {
if (iconAdConfig != null) { if (outConfig != null) {
return iconAdConfig; return outConfig;
} }
String outConfigString = SPUtils.getInstance(context).getString(OUT_CONFIG, ""); String outConfigString = SPUtils.getInstance(context, CONFIG_SP).getString(OUT_CONFIG, "");
if (!TextUtils.isEmpty(outConfigString)) { if (!TextUtils.isEmpty(outConfigString)) {
try { try {
iconAdConfig = new Gson().fromJson(outConfigString, IconAdConfig.class); outConfig = new Gson().fromJson(outConfigString, OutConfig.class);
} catch (Exception ignored) { } catch (Exception ignored) {
} }
if (iconAdConfig == null) { if (outConfig == null) {
SPUtils.getInstance(context).remove(OUT_CONFIG, true); SPUtils.getInstance(context, CONFIG_SP).remove(OUT_CONFIG, true);
} }
} }
return iconAdConfig; LogUtil.d(TAG + "outConfig = " + outConfig);
return outConfig;
} }
/** /**
...@@ -152,7 +156,7 @@ public class DataManager { ...@@ -152,7 +156,7 @@ public class DataManager {
return iconOpt; return iconOpt;
} }
String outConfigString = SPUtils.getInstance(context).getString(ICON_CONFIG, ""); String outConfigString = SPUtils.getInstance(context, CONFIG_SP).getString(ICON_CONFIG, "");
if (!TextUtils.isEmpty(outConfigString)) { if (!TextUtils.isEmpty(outConfigString)) {
try { try {
iconOpt = new Gson().fromJson(outConfigString, IconOpt.class); iconOpt = new Gson().fromJson(outConfigString, IconOpt.class);
...@@ -160,10 +164,10 @@ public class DataManager { ...@@ -160,10 +164,10 @@ public class DataManager {
} }
if (iconOpt == null) { if (iconOpt == null) {
SPUtils.getInstance(context).remove(ICON_CONFIG, true); SPUtils.getInstance(context, CONFIG_SP).remove(ICON_CONFIG, true);
} }
} }
LogUtil.d(TAG + "iconOpt = " + iconOpt);
return iconOpt; return iconOpt;
} }
......
...@@ -3,7 +3,8 @@ package com.zl.sdk.icon; ...@@ -3,7 +3,8 @@ package com.zl.sdk.icon;
import android.text.TextUtils; import android.text.TextUtils;
import com.zl.sdk.OutHelp; import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.IconAdConfig; import com.zl.sdk.bean.OutConfig;
import com.zl.sdk.data.DataManager;
import com.zl.sdk.event.statistics.Statistics; import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.out.DxManager; import com.zl.sdk.out.DxManager;
import com.zl.sdk.util.LogUtil; import com.zl.sdk.util.LogUtil;
...@@ -95,32 +96,10 @@ public class IconHelp { ...@@ -95,32 +96,10 @@ public class IconHelp {
} }
} }
private static final String PREF_FILE_NAME = "NetWeatherConfig";
private static final String KEY_WEATHER_HIDE_SHOW_ICON_AD_CONFIG = "h_s_Icon_Ad_Config";
private IconAdConfig getIconAdConfigObj() {
IconAdConfig iconOpt = null;
String json = SPUtils.getInstance(OutHelp.get().getContext(), PREF_FILE_NAME).getString(KEY_WEATHER_HIDE_SHOW_ICON_AD_CONFIG, "");
if (TextUtils.isEmpty(json)) {
return null;
}
try {
JSONObject jsonObject = new JSONObject(json);
iconOpt = new IconAdConfig();
iconOpt.retry_interval_time = jsonObject.getInt("retry_interval_time");
iconOpt.retry_times = jsonObject.getInt("retry_times");
} catch (Exception e) {
}
LogUtil.d("get icon ad config:" + iconOpt);
return iconOpt;
}
private void iconHadHide() { private void iconHadHide() {
statIconHideUser(); statIconHideUser();
IconAdConfig adConfig = getIconAdConfigObj(); OutConfig adConfig = DataManager.get().getOutDataFromSP(OutHelp.get().getContext());
if (adConfig != null) { if (adConfig != null) {
IconHelp.get().setRetryShowAdCount(adConfig.retry_times); IconHelp.get().setRetryShowAdCount(adConfig.retry_times);
IconHelp.get().setRetryShowAdTime(adConfig.retry_interval_time * 1000L); IconHelp.get().setRetryShowAdTime(adConfig.retry_interval_time * 1000L);
......
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