Authored by 张丽霞

明星原创toast,增加品牌相关id,数据请求顺序,review by redding

... ... @@ -37,6 +37,7 @@ import {
import {
setBrandId,
setUdid,
setId,
} from './reducers/detail/detailActions';
function getInitialState() {
... ... @@ -101,9 +102,9 @@ export default function native(platform) {
</Provider>
);
} else {
let brandId=this.props.id;
let id=this.props.id;
let udid=this.props.udid;
store.dispatch(setBrandId(brandId));
store.dispatch(setId(id));
store.dispatch(setUdid(udid));
return (
<Provider store={store}>
... ...
... ... @@ -70,6 +70,9 @@ export default class BrandIntro extends Component {
<SlicedImage resizeMode={'stretch'} source={{uri: detail.brand_ico}} style={{width:brandIconWidth-2, height:brandIconWidth-2}}/>
</View>
<View style={styles.blackView}>
</View>
</View>
);
}
... ... @@ -81,7 +84,7 @@ let brandIconWidth = 84 * DEVICE_WIDTH_RATIO;
let styles = StyleSheet.create({
container: {
backgroundColor: '#f0f0f0',
backgroundColor: 'white',
},
coverImage: {
height: 200,
... ... @@ -129,5 +132,9 @@ let styles = StyleSheet.create({
marginTop: 5 * DEVICE_WIDTH_RATIO,
marginLeft: 15 * DEVICE_WIDTH_RATIO,
marginRight: 15 * DEVICE_WIDTH_RATIO,
},
blackView: {
backgroundColor: '#f0f0f0',
height: 15 * DEVICE_WIDTH_RATIO,
}
});
... ...
... ... @@ -6,10 +6,12 @@ export default keyMirror({
SET_CHANNEL: null,
SET_SEGMENT: null,
SET_GENDER: null,
SET_ID: null,
SET_BRAND_ID:null,
SET_UDID:null,
SET_BRAND_INTRO_UNFOLD: null,
SET_MORE_PRODUCT_URL: null,
CLEAR_ADD_CANCEL_TIP: null,
PLUSTAR_LIST_REQUEST: null,
PLUSTAR_LIST_SUCCESS: null,
... ...
... ... @@ -20,6 +20,7 @@ import BrandIntro from '../components/detail/BrandIntro'
import BrandArticleList from '../components/detail/BrandArticleList'
import BrandArticleCell from '../components/detail/BrandArticleCell'
import NewArrival from '../components/detail/NewArrival'
import Prompt from '../../coupon/components/coupon/Prompt';
const actions = [
detailActions,
... ... @@ -55,6 +56,7 @@ class DetailContainer extends Component {
this._onPressFav = this._onPressFav.bind(this);
this._onPressBrandIntroMore = this._onPressBrandIntroMore.bind(this);
this._onPressMoreProducts = this._onPressMoreProducts.bind(this);
this._addCanelFavTipRemove = this._addCanelFavTipRemove.bind(this);
this.renderRow = this.renderRow.bind(this);
this.dataSource = new ListView.DataSource({
... ... @@ -64,15 +66,12 @@ class DetailContainer extends Component {
}
componentDidMount() {
this.props.actions.setBrandId('153');
this.props.actions.uidBrandFav();
this.props.actions.brandInfo();
this.props.actions.newArrive();
this.props.actions.articleByBrand();
}
componentWillReceiveProps(nextProps) {
if (!nextProps.detail.get('brandInfo').get('titleUnfold')) {
if (this.props.detail.get('brandInfo').get('titleUnfold') && !nextProps.detail.get('brandInfo').get('titleUnfold')) {
this.listView.scrollTo({x: 0, y: 0, animated: false, });
}
}
... ... @@ -115,6 +114,10 @@ class DetailContainer extends Component {
}
_addCanelFavTipRemove(){
this.props.actions.addCanelFavTipRemove();
}
renderRow(rowData, sectionID, rowID, highlightRow) {
if (!rowData && rowData.length == 0) {
return null;
... ... @@ -127,6 +130,7 @@ class DetailContainer extends Component {
brandFav={this.props.detail.get('brandFav')}
onPressFav={this._onPressFav}
onPressBrandIntroMore={this._onPressBrandIntroMore}
addCanelFavTipRemove={this._addCanelFavTipRemove}
/>
);
case 'productList':
... ... @@ -175,6 +179,13 @@ class DetailContainer extends Component {
dataSource={this.dataSource.cloneWithRows(dataSource)}
renderRow={this.renderRow}
/>
{detail.get('brandInfo').get('addCancelTip') !== '' ? <Prompt
text={detail.get('brandInfo').get('addCancelTip')}
duration={800}
onPromptHidden={this._addCanelFavTipRemove}
/> : null}
</View>
);
}
... ... @@ -183,6 +194,7 @@ class DetailContainer extends Component {
let styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f0f0f0',
},
contentContainer:{
flexDirection: 'column',
... ...
... ... @@ -12,12 +12,13 @@ const {
JUMP_WITH_URL,
SET_ID,
SET_BRAND_ID,
SET_GENDER,
SET_UDID,
SET_BRAND_INTRO_UNFOLD,
SET_MORE_PRODUCT_URL,
CLEAR_ADD_CANCEL_TIP,
BRADN_FAV_REQUEST,
BRADN_FAV_SUCCESS,
... ... @@ -96,7 +97,7 @@ export function brandInfo(reload = false) {
return (dispatch, getState) => {
let {app, detail} = getState();
let item = detail.get('brandInfo');
let brandId = detail.get('brandId');
let id = detail.get('id');
if (reload) {
// 强制刷新数据
} else {
... ... @@ -104,18 +105,17 @@ export function brandInfo(reload = false) {
return;
}
}
console.log('----1212------');
console.log(brandId);
console.log('reload');
console.log(reload);
dispatch(brandInfoRequest());
return new DetailService().getBrandInfo(brandId)
return new DetailService().getBrandInfo(id)
.then(json => {
let brandIntro = removeHtmlTag(json.brand_intro);
let brandIco = 'http:' + processImageUrl.getSourceUrl(json.brand_ico, 'brandLogo') + '?imageView/{mode}/w/{width}/h/{height}';
json.brand_intro = brandIntro;
json.brand_ico = brandIco;
dispatch(brandInfoSuccess(json));
dispatch(setBrandId(json.brand_id));
dispatch(newArrive());
dispatch(articleByBrand());
let isDifferent = json.is_different;
let url = '?openby:yohobuy={"action":"go.brand","params":{"brand_id":"' + json.brand_id + '","is_different":"' + isDifferent + '"}}';
dispatch(setMoreProductUrl(url));
... ... @@ -134,6 +134,13 @@ function removeHtmlTag(str) {
return str;
}
export function setId(id){
return {
type: SET_ID,
payload: id
}
}
export function setBrandId(brandId){
return {
type: SET_BRAND_ID,
... ... @@ -155,6 +162,12 @@ export function setUdid(udid){
};
}
export function addCanelFavTipRemove(){
return {
type: CLEAR_ADD_CANCEL_TIP
}
}
export function brandIntroUnfold(unfold) {
return {
type: SET_BRAND_INTRO_UNFOLD,
... ... @@ -237,7 +250,7 @@ export function newArrive(){
return;
}
dispatch(newArriveRequest());
return new DetailService(app.host).getNew('brandId',gender)
return new DetailService(app.host).getNew(brandId,gender)
.then(json=>{
let payload = json.product_list;
dispatch(newArriveSuccess(payload));
... ...
... ... @@ -9,6 +9,7 @@ let InitialState = Record({
detail: Map(),
error: null,
titleUnfold: false,
addCancelTip: '',
})),
brandFav: new (Record({
isFetching: false,
... ... @@ -16,7 +17,8 @@ let InitialState = Record({
error: null,
})),
moreProductUrl:'',
brandId:'',
id:'', //品牌关系id,Native传过来
brandId:'', //品牌Id,由“guang/api/v1/plustar/getbrandinfo”解析获取
udid:'',
gender:'',
productList: List(),
... ...
... ... @@ -9,11 +9,13 @@ const {
BRAND_INFO_FAILURE,
JUMP_WITH_URL,
SET_ID,
SET_BRAND_ID,
SET_GENDER,
SET_UDID,
SET_BRAND_INTRO_UNFOLD,
SET_MORE_PRODUCT_URL,
CLEAR_ADD_CANCEL_TIP,
BRADN_FAV_REQUEST,
BRADN_FAV_SUCCESS,
... ... @@ -58,6 +60,9 @@ export default function plustarReducer(state=initialState, action) {
return state.setIn(['brandInfo', 'isFetching'], false)
.setIn(['brandInfo', 'error'], action.payload);
}
case SET_ID:{
return state.set('id', action.payload);
}
case SET_BRAND_ID:{
return state.set('brandId', action.payload);
}
... ... @@ -70,6 +75,9 @@ export default function plustarReducer(state=initialState, action) {
case SET_MORE_PRODUCT_URL:{
return state.set('moreProductUrl', action.payload);
}
case CLEAR_ADD_CANCEL_TIP:{
return state.setIn(['brandInfo', 'addCancelTip'], '');
}
case NEW_ARRIVE_SUCCESS:{
return state.set('productList', Immutable.fromJS(action.payload));
}
... ... @@ -97,11 +105,13 @@ export default function plustarReducer(state=initialState, action) {
}
case CANCEL_FAVORITE_SUCCESS:{
return state.setIn(['brandFav', 'isFav'], false)
.setIn(['brandFav', 'error'], null);
.setIn(['brandFav', 'error'], null)
.setIn(['brandInfo', 'addCancelTip'], '添加收藏成功');
}
case ADD_FAVORITE_SUCCESS:{
return state.setIn(['brandFav', 'isFav'], true)
.setIn(['brandFav', 'error'], null);
.setIn(['brandFav', 'error'], null)
.setIn(['brandInfo', 'addCancelTip'], '取消收藏成功');
}
break;
... ...