本文整理汇总了TypeScript中common/util/partition-for-user.partitionForUser函数的典型用法代码示例。如果您正苦于以下问题:TypeScript partitionForUser函数的具体用法?TypeScript partitionForUser怎么用?TypeScript partitionForUser使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了partitionForUser函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: setCookie
async function setCookie(profile: Profile, cookie: Map<string, string>) {
const partition = partitionForUser(String(profile.user.id));
const session = require("electron").session.fromPartition(partition, {
cache: false,
});
for (const name of Object.keys(cookie)) {
const value = cookie[name];
const epoch = Date.now() * 0.001;
await new ItchPromise((resolve, reject) => {
const parsed = urlParser.parse(urls.itchio);
const opts = {
name,
value: encodeURIComponent(value),
url: `${parsed.protocol}//${parsed.hostname}`,
domain: "." + parsed.hostname,
secure: parsed.protocol === "https:",
httpOnly: true,
expirationDate: epoch + YEAR_IN_SECONDS, // have it valid for a year
};
logger.debug(`Setting cookie: ${JSON.stringify(opts)}`);
session.cookies.set(opts, (error: Error) => {
if (error) {
logger.error(`Cookie error: ${JSON.stringify(error)}`);
reject(error);
} else {
resolve();
}
});
});
}
}
示例2: async
watcher.on(actions.loginSucceeded, async (store, action) => {
const userId = action.payload.profile.user.id;
const { session } = require("electron");
const partition = partitionForUser(String(userId));
const ourSession = session.fromPartition(partition, { cache: true });
await applyProxySettings(ourSession, store.getState().system);
});
示例3: async
watcher.on(actions.clearBrowsingData, async (store, action) => {
const promises: Promise<any>[] = [];
const userId = store.getState().profile.credentials.me.id;
const partition = partitionForUser(String(userId));
const ourSession = session.fromPartition(partition, { cache: true });
logger.debug(`asked to clear browsing data`);
if (action.payload.cache) {
logger.debug(`clearing cache for ${partition}`);
promises.push(
new ItchPromise((resolve, reject) => {
ourSession.clearCache(resolve);
})
);
}
if (action.payload.cookies) {
logger.debug(`clearing cookies for ${partition}`);
promises.push(
new ItchPromise((resolve, reject) => {
ourSession.clearStorageData(
{
storages: ["cookies"],
// for all origins
origin: null,
// look chromium just clear everything thanks
quotas: ["temporary", "persistent", "syncable"],
},
resolve
);
})
);
}
await Promise.all(promises);
store.dispatch(
actions.statusMessage({
message: ["prompt.clear_browsing_data.notification"],
})
);
});
示例4: loginSucceeded
async function loginSucceeded(store: Store, profile: Profile) {
logger.info(`Login succeeded, setting up session`);
try {
const userId = profile.id;
const partition = partitionForUser(String(userId));
const customSession = session.fromPartition(partition, { cache: true });
logger.info(`Registering itch protocol for session ${partition}`);
registerItchProtocol(store, customSession);
} catch (e) {
logger.warn(`Could not register itch protocol for session: ${e.stack}`);
}
try {
logger.info(`Restoring tabs...`);
await restoreTabs(store, profile);
} catch (e) {
logger.warn(`Could not restore tabs: ${e.stack}`);
}
logger.info(`Dispatching login succeeded`);
store.dispatch(actions.loginSucceeded({ profile }));
try {
logger.info(`Fetching owned keys...`);
let t1 = Date.now();
await mcall(
messages.FetchProfileOwnedKeys,
{
profileId: profile.id,
fresh: true,
limit: 1,
},
convo => {
hookLogging(convo, logger);
}
);
let t2 = Date.now();
logger.info(`Fetched owned keys in ${elapsed(t1, t2)}`);
store.dispatch(actions.ownedKeysFetched({}));
} catch (e) {
logger.warn(`In initial owned keys fetch: ${e.stack}`);
}
}
示例5: async
watcher.on(actions.loginSucceeded, async (store, action) => {
const userId = action.payload.profile.user.id;
logger.debug(`Setting up for user ${userId}`);
const session = electron.session.fromPartition(
partitionForUser(String(userId)),
{ cache: true }
);
// requests to 'itch-internal' are used to communicate between web content & the app
const internalFilter = {
urls: ["https://itch-internal/*"],
};
session.webRequest.onBeforeRequest(internalFilter, (details, callback) => {
callback({ cancel: true });
let parsed = urlParser.parse(details.url);
const { pathname, query } = parsed;
const params = flattenQuery(querystring.parse(query));
const { tab } = params;
logger.debug(`Got itch-internal request ${pathname}?${query} for ${tab}`);
if (pathname === "/open-devtools") {
store.dispatch(actions.openDevTools({ forApp: false }));
} else {
logger.warn(
`Got unrecognized message via itch-internal: ${pathname}, params ${JSON.stringify(
params
)}`
);
}
});
});