summaryrefslogtreecommitdiff
path: root/StoneIsland/www/js/sdk/auth.js
blob: 55b3afdce534924f9d4bbceadf7c1cfd9f5690e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
      headers: {
        "x-yoox-appname": auth.appname,
        "x-yoox-account-token": auth.access_token,
        "x-yoox-device": auth.device,
        "x-yoox-api-key": auth.apikey,
      },
*/

var auth = (sdk.auth = (function () {
  var auth = {};

  auth.appname = is_iphone
    ? "native-iphone-stoneisland/1.0.0"
    : "native-android-stoneisland/1.0.0";
  auth.apikey =
    "U2FsdGVkX18fThqg9bF0/ZgE9Jg948hn8O9EXli4B2729nAESCQaexv//M5+7+za";
  auth.device = "smartphone";

  auth.access_token = "";
  auth.user_id = -1;

  auth.next_view = null;
  auth.deferred_product = null;

  // ios: integrate keychain api
  // android: cordova.file.externalRootDirectory api

  auth.init = function (fn) {
    console.log("AUTH INIT");
    auth.get_user(function () {
      if (auth.logged_in()) {
        sdk.account.checkin({
          success: function (data) {
            fn && fn(auth.logged_in());
          },
          error: function () {
            auth.log_out();
            fn && fn(false);
            //
          },
        });
        auth.get_cart();
      } else {
        fn && fn(auth.logged_in());
      }
    });
  };

  auth.set_user = function (user_id, access_token, cb) {
    auth.access_token = access_token;
    auth.user_id = user_id;

    localStorage.setItem("yoox.access_token", access_token);
    localStorage.setItem("yoox.user_id", user_id);

    window.FirebasePlugin && window.FirebasePlugin.setUserId(user_id);

    cb && cb();
  };
  auth.get_user = function (cb) {
    auth.access_token = localStorage.getItem("yoox.access_token") || "";
    auth.user_id = localStorage.getItem("yoox.user_id") || -1;
    cb && cb();
  };
  auth.clear_user = function (cb) {
    auth.access_token = "";
    auth.user_id = -1;
    localStorage.removeItem("yoox.access_token");
    localStorage.removeItem("yoox.user_id");

    cb && cb();
  };

  auth.set_cart = function (cart_id, cart_token, cb) {
    localStorage.setItem("yoox.cart_token", cart_token);
    localStorage.setItem("yoox.cart_id", cart_id);
    cb && cb();
  };
  auth.get_cart = function (cb) {
    sdk.cart.token = localStorage.getItem("yoox.cart_token") || "";
    sdk.cart.id = localStorage.getItem("yoox.cart_id") || -1;
    cb && cb();
  };
  auth.clear_cart = function (cb) {
    sdk.cart.token = "";
    sdk.cart.id = -1;
    localStorage.removeItem("yoox.cart_token");
    localStorage.removeItem("yoox.cart_id");
    cb && cb();
  };
  auth.create_cart = function (opt) {
    opt = opt || {};
    if (auth.has_cart()) {
      opt.success && opt.success();
      return;
    }
    sdk.cart.initialize({
      success: function (data) {
        sdk.cart.set_user({
          success: function () {
            auth.set_cart(sdk.cart.id, sdk.cart.token, function () {
              opt.success && opt.success();
            });
          },
          error: function () {
            opt.clear_cart();
            opt.error && opt.error();
          },
        });
      },
      error: function () {
        opt.clear_cart();
        opt.error && opt.error();
      },
    });
  };

  auth.add_deferred_product_to_cart = function (opt) {
    opt = opt || {};
    // auth.deferred_product
    if (!auth.deferred_product) {
      console.log("VV NO DEFERRED PROD");
      opt.success && opt.success();
      return;
    }
    console.log("ADD DEFERRED PROD");
    sdk.cart.add_item({
      data: auth.deferred_product,
      success: function () {
        console.log("ADDED ITEM");
        app.header.increment_cart_count();
        opt.success && opt.success();
      },
      error: function (data) {
        console.log("ERROR ADDING ITEM");
        opt.error && opt.error();
      },
    });
    auth.deferred_product = null;
  };

  auth.log_out = function () {
    auth.clear_user();
    auth.clear_cart();
  };
  auth.logged_in = function () {
    return auth.user_id && auth.user_id !== -1 && auth.user_id !== "undefined";
  };
  auth.has_cart = function () {
    return sdk.cart.id && sdk.cart.id !== -1 && sdk.cart.id !== "undefined";
  };

  return auth;
})());