// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'shrine_types.dart';

const String _kGalleryAssetsPackage = 'flutter_gallery_assets';

const Vendor _ali = const Vendor(
  name: 'Ali’s shop',
  avatarAsset: 'shrine/vendors/ali-connors.png',
  avatarAssetPackage: _kGalleryAssetsPackage,
  description:
    'Ali Connor’s makes custom goods for folks of all shapes and sizes '
    'made by hand and sometimes by machine, but always with love and care. '
    'Custom orders are available upon request if you need something extra special.'
);

const Vendor _sandra = const Vendor(
  name: 'Sandra’s shop',
  avatarAsset: 'shrine/vendors/sandra-adams.jpg',
  avatarAssetPackage: _kGalleryAssetsPackage,
  description:
    'Sandra specializes in furniture, beauty and travel products with a classic vibe. '
    'Custom orders are available if you’re looking for a certain color or material.'
);

const Vendor _trevor = const Vendor(
  name: 'Trevor’s shop',
  avatarAsset: 'shrine/vendors/zach.jpg',
  avatarAssetPackage: _kGalleryAssetsPackage,
  description:
    'Trevor makes great stuff for awesome people like you. Super cool and extra '
    'awesome all of his shop’s goods are handmade with love. Custom orders are '
    'available upon request if you need something extra special.'
);

const Vendor _peter = const Vendor(
  name: 'Peter’s shop',
  avatarAsset: 'shrine/vendors/peter-carlsson.png',
  avatarAssetPackage: _kGalleryAssetsPackage,
  description:
    'Peter makes great stuff for awesome people like you. Super cool and extra '
    'awesome all of his shop’s goods are handmade with love. Custom orders are '
    'available upon request if you need something extra special.'
);

const Vendor _stella = const Vendor(
  name: 'Stella’s shop',
  avatarAsset: 'shrine/vendors/16c477b.jpg',
  avatarAssetPackage: _kGalleryAssetsPackage,
  description:
    'Stella sells awesome stuff at lovely prices. made by hand and sometimes by '
    'machine, but always with love and care. Custom orders are available upon request '
    'if you need something extra special.'
);

const List<Product> _allProducts = const <Product> [
  const Product(
    name: 'Vintage Bluetooth Radio',
    imageAsset: 'shrine/products/radio.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['furniture', 'latest'],
    price: 300.00,
    vendor: _sandra,
    description:
      'Isn’t it cool when things look old, but they\'re not. Looks Old But Not makes '
      'awesome vintage goods that are super smart. This ol’ radio just got an upgrade. '
      'Connect to it with an app and jam out to some top forty.'
  ),
  const Product(
    name: 'Sunglasses',
    imageAsset: 'shrine/products/sunnies.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion', 'beauty'],
    price: 20.00,
    vendor: _trevor,
    description:
      'Be an optimist. Carry Sunglasses with you at all times. All Tints and '
      'Shades products come with polarized lenses and super duper UV protection '
      'so you can look at the sun for however long you want. Sunglasses make you '
      'look cool, wear them.'
  ),
  const Product(
    name: 'Clock',
    imageAsset: 'shrine/products/clock.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['furniture'],
    price: 30.00,
    vendor: _trevor,
    description:
      'Timekeeper Co makes clocks that tell time precisely. Clock is '
      'very simple to use, set the time using your phone, hang it, and viola! '
      'You’ll never be late again.'
  ),
  const Product(
    name: 'Red popsicle',
    imageAsset: 'shrine/products/popsicle.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['food', 'fashion'],
    price: 300.00,
    vendor: _stella,
    description:
      'Looks can be deceiving. This red popsicle comes in a wide variety of '
      'flavors, including strawberry, that burst as soon as they hit your mouth. '
      'Red popsicles melt slowly, so savor the flavor.'
  ),
  const Product(
    name: 'Folding Chair',
    imageAsset: 'shrine/products/lawn_chair.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['furniture'],
    price: 63.00,
    vendor: _stella,
    description:
      'Leave the tunnel and the rain is fallin amazing things happen when you wait'
  ),
  const Product(
    name: 'Green comfort chair',
    imageAsset: 'shrine/products/chair.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['furniture'],
    price: 36.00,
    vendor: _ali,
    description:
      'Leave the tunnel and the rain is fallin amazing things happen when you wait'
  ),
  const Product(
    name: 'Better wearing heels',
    imageAsset: 'shrine/products/heels.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['fashion'],
    price: 125.00,
    vendor: _peter,
    description:
      'Leave the tunnel and the rain is fallin amazing things happen when you wait'
  ),
  const Product(
    name: 'Green Slip-ons',
    imageAsset: 'shrine/products/green-shoes.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion'],
    price: 75.00,
    vendor: _sandra,
    description:
      'Feetsy has been making extraordinary slip-ons for decades. With each pair '
      'of shoes purchased Feetsy donates a pair to those in need. Buy yourself a pair, '
      'buy someone else a pair. Very Comfortable.'
  ),
  const Product(
    name: 'Teapot',
    imageAsset: 'shrine/products/teapot.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['furniture', 'fashion'],
    price: 70.00,
    vendor: _trevor,
    featureTitle: 'Beautiful little teapot',
    featureDescription:
      'Leave the tunnel and the rain is fallin amazing things happen when you wait',
    description:
      'Impress your guests with Teapot by Kitchen Stuff. Teapot holds extremely '
      'hot liquids and pours them from the spout. Use the handle, shown on the left, '
      'so your fingers don’t get burnt while pouring.'
  ),
  const Product(
    name: 'Blue suede shoes',
    imageAsset: 'shrine/products/chucks.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion'],
    price: 89.00,
    vendor: _trevor,
    description:
      'Who needs pants when you have shoes! Blue suede shoes were meant to go '
      'dancing in, so you may want to pick up a few of these. These things are stylish.'
  ),
  const Product(
    name: 'Dipped Brush',
    imageAsset: 'shrine/products/brush.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['fashion', 'beauty'],
    price: 25.00,
    vendor: _stella,
    description:
      'WeDipIt does it again. This handle dipped 4 inch brush is a perfect for '
      'painting 4 inch lines, or coloring in big areas with paint. Just be sure you '
      'don’t drop it in a bucket of red paint, then it won’t look dipped anymore.'
  ),
  const Product(
    name: 'Perfect Goldfish Bowl',
    imageAsset: 'shrine/products/fish_bowl.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['latest', 'furniture'],
    price: 30.00,
    vendor: _ali,
    description:
      'The Perfect Bowl Co makes the best bowls for just about anything you can '
      'think of. This Perfect Goldfish Bowl holds water and fish perfectly. Looks '
      'great in living rooms. Keep out of reach from cats.'
  ),
  const Product(
    name: 'Red Lipstick Set',
    imageAsset: 'shrine/products/lipstick.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['fashion', 'beauty'],
    price: 54.00,
    vendor: _sandra,
    description:
      'Trying to find the perfect shade to match your mood? Try no longer. Red '
      'Lipstick Set by StickLips has you covered for those nights when you need '
      'to get out, or even if you’re just headed to work.'
  ),
  const Product(
    name: 'Backpack',
    imageAsset: 'shrine/products/backpack.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion'],
    price: 25.00,
    vendor: _peter,
    description:
      'This backpack by Bags ‘n’ stuff can hold just about anything: a laptop, '
      'a pen, a protractor, notebooks, small animals, plugs for your devices, '
      'sunglasses, gym clothes, shoes, gloves, two kittens, and even lunch!'
  ),
  const Product(
    name: 'Half Shield Helmet',
    imageAsset: 'shrine/products/helmet.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion', 'latest'],
    price: 25.00,
    vendor: _ali,
    description:
      'Half Shield is the right helmet for those warm summer days on the road. '
      'Dot approved, these helmets have been rigorously tested. Keep that noggin '
      'protected.'
  ),
  const Product(
    name: 'Beachball',
    imageAsset: 'shrine/products/beachball.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['latest'],
    price: 17.00,
    vendor: _peter,
    description:
      'Are you at a baseball game and feeling bored? At a pool party and looking '
      'for a laugh? Do you need something to take your anger out on? Beachball, '
      'by inflatable fun, is the perfect outlet.'
  ),
  const Product(
    name: 'Old Binoculars',
    imageAsset: 'shrine/products/binoculars.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion', 'latest'],
    price: 25.00,
    vendor: _stella,
    description:
      'These Binoculars by See Through are amazing and can make things that are '
      'really far away seem like they’re right in front of you. Bring them to the '
      'beach. Now you can buy the cheap seats at the big game and feel like you’re '
      'right in the action.'
  ),
  const Product(
    name: 'Lime Flippers',
    imageAsset: 'shrine/products/flippers.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>['travel', 'fashion', 'beauty'],
    price: 25.00,
    vendor: _peter,
    description:
      'Flippers are a nice tool to have when you’re being chased by an oversized '
      'sea turtle. Never get caught again with these fast water shoes. You’re like '
      'a fish, but more graceful.'
  ),
  const Product(
    name: 'Surfboard',
    imageAsset: 'shrine/products/surfboard.png',
    imageAssetPackage: _kGalleryAssetsPackage,
    categories: const <String>[ 'travel', 'latest'],
    price: 120.00,
    vendor: _stella,
    description:
      'Who says you can’t walk on water? With Surfboard, by Surfboard Supply, '
      'you can fly on water. This beast is fast and handles like a porsche. '
      'Hang Ten Bro!'
  )
];

List<Product> allProducts() {
  assert(_allProducts.every((Product product) => product.isValid()));
  return new List<Product>.unmodifiable(_allProducts);
}
