+ return MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self)->session;
+}
+
+
+TnyAccount*
+modest_tny_account_store_get_tny_account_by_id (ModestTnyAccountStore *self, const gchar *id)
+{
+ TnyAccount *account = NULL;
+ ModestTnyAccountStorePrivate *priv;
+ GSList *cursor;
+
+ g_return_val_if_fail (self, NULL);
+ g_return_val_if_fail (id, NULL);
+
+ priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self);
+
+ for (cursor = priv->store_accounts; cursor ; cursor = cursor->next) {
+ const gchar *acc_id = tny_account_get_id (TNY_ACCOUNT(cursor->data));
+ if (acc_id && strcmp (acc_id, id) == 0) {
+ account = TNY_ACCOUNT(cursor->data);
+ break;
+ }
+ }
+
+ /* if we already found something, no need to search the transport accounts */
+ for (cursor = priv->transport_accounts; !account && cursor ; cursor = cursor->next) {
+ const gchar *acc_id = tny_account_get_id (TNY_ACCOUNT(cursor->data));
+ if (acc_id && strcmp (acc_id, id) == 0) {
+ account = TNY_ACCOUNT(cursor->data);
+ break;
+ }
+ }
+
+ if (account)
+ g_object_ref (G_OBJECT(account));
+
+ return account;
+}
+
+
+TnyAccount*
+modest_tny_account_store_get_tny_account_by_account (ModestTnyAccountStore *self,
+ const gchar *account_name,
+ TnyAccountType type)
+{
+ TnyAccount *account = NULL;
+ ModestAccountData *account_data;
+ const gchar *id = NULL;
+ ModestTnyAccountStorePrivate *priv;
+
+ g_return_val_if_fail (self, NULL);
+ g_return_val_if_fail (account_name, NULL);
+ g_return_val_if_fail (type == TNY_ACCOUNT_TYPE_STORE || type == TNY_ACCOUNT_TYPE_TRANSPORT,
+ NULL);
+
+ priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self);
+
+ account_data = modest_account_mgr_get_account_data (priv->account_mgr, account_name);
+ if (!account_data) {
+ g_printerr ("modest: cannot get account data for account '%s'\n", account_name);
+ return NULL;
+ }
+
+ if (type == TNY_ACCOUNT_TYPE_STORE && account_data->store_account)
+ id = account_data->store_account->account_name;
+ else if (account_data->transport_account)
+ id = account_data->transport_account->account_name;
+
+ if (id)
+ account = modest_tny_account_store_get_tny_account_by_id (self, id);
+ if (!account)
+ g_printerr ("modest: could not get tny %s account for %s (id=%s)\n",
+ type == TNY_ACCOUNT_TYPE_STORE? "store" : "transport",
+ account_name, id ? id : "<none>");
+
+ modest_account_mgr_free_account_data (priv->account_mgr, account_data);
+ return account;